- 博客(17)
- 资源 (8)
- 收藏
- 关注
原创 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回
int findDigtalMaxLength(char* a, int count, char*& ret){ if(a==NULL || count<0)//输入参数处理 return 0; int maxstart=0;//记录最长数字串的起始 int maxlength=0;//记录最长数字串的长度 int length=0; int start=0; for(int
2012-08-21 13:45:07 1154
原创 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
void getCombine(int* aux, int num, int indx, int val){ if(num<indx)//输入参数检测。 return; if(indx==val) { aux[indx]=1;//将最后一个数添加进去 for(int i=1;i<=indx;i++)//遍历所有之前的数,输出 { if(aux[i]==1)
2012-08-21 13:22:33 1950
原创 写正确函数需要注意的地方:快速返回斐波那契数的第n项
void f(int n, int* a){ static int A[4]={1,1,1,0}; if(n==1) return; f(n/2,a);//计算一半矩阵乘法的结果 int temp[4]; for(int i=0;i<4;i++) temp[i]=a[i]; for(int i=0;i<2;++i)//获得n/2*2的结果 { for(int j
2012-08-20 17:12:59 1802
原创 写正确函数需要注意的地方:链表的逆转,递归与非递归
Node* invert_list(Node* phead){ if(phead==NULL || phead->pNext==NULL)//参数验证 return phead; Node* p1=phead; Node* p2=phead->pNext; Node* p3=phead->pNext->pNext; while(p2!=NULL) { p2->pNext=p
2012-08-20 13:28:11 1092 1
原创 写正确函数需要注意的地方:子数组的最大和
int maxSum(int* a, int count){ if(a==NULL) { cerr<<"array==NULL"<<endl; throw ("array == NULL"); } if(count<0) { cerr<<"count<0"<<endl; throw ("count<0"); } int max=0x80000000; int f
2012-08-20 11:27:38 769
原创 写正确函数需要注意的地方:最大堆的创建与堆排序
void push_down(int* a, int indx,int count){ do { int leftindx=indx*2+1; int rightindx=leftindx+1; //在将indx所指的元素向下压的时候,将左右两个子节点中最大的,并且大于indx本身的向上提。 //如果没有可以上提的左右子节点,则结束。 if (leftindx=coun
2012-08-19 17:49:01 1007
原创 写正确函数需要注意的地方:两个有序链表的合并
Node* merge(Node* p1, Node* p2){ //检验输入参数。 if(p1==NULL) return p2; else if(p2==NULL) return p1; Node* head; Node* p; if (p1->value>p2->value) {//使得p1的第一个元素大于p2的。 p=p1; p1=p2; p2=p;
2012-08-19 16:45:04 801
原创 写正确函数需要注意的地方:int转char*, char* 转int。
void invert(char* a, int start, int end){ for(;start<end;++start,--end) { char temp=a[start]; a[start]=a[end]; a[end]=temp; }}int toint(char *str){ int result=0; for(int i=0;str[i]!=0;
2012-08-13 17:50:11 2000
原创 写正确函数需要注意的地方:翻转句子中单词的顺序。
void invert(char* a, int start, int end){ for(;start<end;++start,--end) { char temp=a[start]; a[start]=a[end]; a[end]=temp; }}void invertwords(char* a, int start, int end){ invert(a,st
2012-08-13 16:58:31 1348
原创 链表问题:如何判断一个链表有环,以及环的长度,起始位置。
1. 判断链表是否有环:采用两个指针,一个每次循环前进一步,一个每次循环前进两步。如果存在环,则一定会相交。否则速度快的指针首先为NULL,或其next为NULL。2. 环的长度:从相交点开始,循环一次,直到再次到该相交点。循环次数即为环的长度。3. 环的起始位置:若相交点为P,环长度为M。计算head节点到交点的距离,为N。则有,P点走M距离回到P点。head走N
2012-08-13 15:33:58 1086
原创 写正确函数需要注意的地方:快速排序
//寡人修改两次之后的正确代码。#include#include#include#includeusing namespace std;int genInt(){ return rand()%100;}templateint partition(vector& array, int startindx, int endindx){ int partvalue=arra
2012-08-12 15:09:00 737
原创 写正确函数需要注意的地方:二分查找
//正确的算法templateint my_binary_search(vector array, V v){ int left=0; int right=array.size()-1; int middle; while (left<=right)//为了使得最后的right能够被判断到。 { middle=(left+right)/2; if (array[middle
2012-08-11 22:07:40 726 1
原创 写正确函数需要注意的地方:strstr
//个人认为比较好的代码char * strstr (register char *buf, register char *sub){ if (buf==NULL || sub==NULL) { return 0; } char *bp; char *sp; if (!*sub) return buf; while (*buf)
2012-08-11 20:54:33 939
原创 C++函数调用中的堆栈
当函数调用时,首先将函数的参数压入栈中,然后将函数的返回值的地址压入栈中,接着调用函数。在函数中,函数将的返回值拷贝到目的地址中。然后再返回。这样子就解决了函数的返回值可能被中断修改的问题。(C++编程思想P249)然而,当存在对象作为函数参数和函数的返回值时,由于在创建临时对象的时候需要调用拷贝构造函数,因此,如果没有重载拷贝构造函数的话,系统将实行简单的位拷
2012-08-11 18:43:32 711
原创 C语言复习一
一、float 型变量的有效数字:7位有效数字。也就是说高于7位的将会被丢失。a=123456.789e5b=a+20这是a与b相等。二、各类数值型间的混合计算转换,横向为必转。double → float^|long^|unsigned(注意了:如果int与unsigned计算,结果为unsigned的)^|int 三、++,--运算结合方向为
2012-08-11 18:42:08 630
原创 C++语言Singleton
Singleton的构造:首先定义一个private 的static自身的对象,然后重载拷贝构造函数,定义一个新的构造函数,并使得构造函数都为private。这样的话,外部就不能调用构造函数了。class Egg{ static Egg e; int i; Egg(int ii): i(ii){} Egg(const Egg&);public: static Egg*
2012-08-11 18:41:29 510
拼图游戏 android
2011-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人