边看边写(打印1到最大的n位数)
来源:互联网 发布:javascript dom对象 编辑:程序博客网 时间:2024/06/05 02:40
注:之前写了使用大数打印的方法
C#代码
#region 打印1到最大的n位数 /// <summary> /// 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 /// 使用递归算法实现,以及使用字符排列的方式,如对000~999进行全排列。 /// </summary> class MaxOfDigital { private int _n; public int n { get { return _n; } set { _n = value; } } public MaxOfDigital(int n) { _n = n; } public void PrintToMaxOfDigits() { if (n <= 0) { Console.WriteLine("n的值必须大于0!"); return; } List<char> number = new List<char>(); for (int i = 0; i < n; i++) number.Add('0'); for (int i = 0; i < 10; i++) { number[0] = Convert.ToChar(48+i); PrintToMaxOfDigitsRecursiverly(number, n, 0); } } private void PrintToMaxOfDigitsRecursiverly(List<char> number,int length,int index) { if (index == length - 1) { PrintNumber(number); return; } for (int i = 0; i < 10; i++) { number[index + 1] = Convert.ToChar(48+i); PrintToMaxOfDigitsRecursiverly(number, length, index + 1); } } public void PrintNumber(List<char> number) { number.ForEach( delegate(char num) { bool isBeginning0 = false; if (num == '0' && isBeginning0 == false) { isBeginning0 = true; } else Console.Write(num); } ); Console.Write(" "); } } #endregion
C++代码
以下是《剑指Offer》的代码,printNumber函数简化了,
void PrintToMaxOfDigital(int n){if(n<=0)return;char *num = new char[n+1];num[n]='\0';for(int i =0 ;i<10;i++){num[0]= i+'0';PrintToMaxOfDigitalsRescursively(num,n,0);}delete []num;}void printNumber(char *num){copy(num,num+strlen(num),ostream_iterator<char,char>(cout,""));cout<<",";}void PrintToMaxOfDigitalsRescursively(char *num,int length,int index){if(index == length){printNumber(num);return;}for(int i=0;i<10;i++){num[index+1]= i+'0';PrintToMaxOfDigitalsRescursively(num,length,index+1);}}对以上函数进行了简化、
void PrintToMaxOfDigital(int n){if(n<=0)return;char *num = new char[n+1];num[n]='\0';PrintToMaxOfDigitalsRescursively(num,n,0);delete []num;}void printNumber(char *num){copy(num,num+strlen(num),ostream_iterator<char,char>(cout,""));cout<<",";}void PrintToMaxOfDigitalsRescursively(char *num,int length,int index){if(index == length){printNumber(num);return;}for(int i=0;i<10;i++){num[index]= i+'0';PrintToMaxOfDigitalsRescursively(num,length,index+1);}}
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的N位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1 到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的N位数
- 使用cwRsync实现windows下文件定时同步(备份)
- hdu4598Difference(差分约束)
- jsp笔记
- vim的ex模式用法
- One way to improve running time
- 边看边写(打印1到最大的n位数)
- usb调试模式已打开,adb devices显示List of devices attached 解决办法!纽维K333一键ROOT,获取ROOT权限!
- 为翻译Learning jQuery而作
- 快速入门:github发布windows版
- 企鹅面试归来
- 2013.8.28
- HDU 1698 Just a Hook
- MongoDB中的锁
- Windows下搭建Eclipse4.3+Android4.0开发环境