打印1到最大的n位数

来源:互联网 发布:淘宝待评价怎么消除 编辑:程序博客网 时间:2024/06/07 07:32


解析:

//打印1到最大的n位数//最开始是看剑指offer实现的,但看着有点晕,于是自己经常调试后总结出来的//所以如果看不怎么懂的时候将代码写出来然后调试,调试后就知道它是怎么运行的//注释的部分是剑指offer上实现的,bool increment(char *str){//bool is_over_flow=false;int tmp=0;//int nTake=0;int len=strlen(str);for(int i=len-1; i>=0; --i){int sum=str[i]-'0'+tmp;//int sum=str[i]-'0'+nTake;if(i==len-1)sum++;if(sum >=10){if(i==0)   return true;//is_over_flow=true;else{sum-=10;tmp=1;//nTake=1;str[i]='0';}}else{str[i]='0'+sum;return false;//break;}}return true;//return is_over_flow;}void print_str(char *str){bool flag=true;int len=strlen(str);for(int i=0; i<len; ++i){if(flag && str[i] !='0')flag=false;if(!flag)printf("%c",str[i]);}printf("\t");}void print_max(int n){if(n<=0)return;char *str=new char[n+1];memset(str,'0',sizeof(str));str[n]='\0';while(!increment(str)){print_str(str);}delete []str;}//最直接的方法-->没有考虑n很大的时候void print_int(int n){int number=1;int i=0;while(i++ <n)number*=10;for(i=1;i<number; ++i)printf("%d ",i);}


0 0
原创粉丝点击