首页 > 代码库 > 剑指offer——打印从1到最大的n位数
剑指offer——打印从1到最大的n位数
因为unsigned int甚至unsigned long类型不一定能表示很大的n位数,它们的表示范围是一定的,所以可以使用字符串来存储,并打印
bool Incerment(char*& str,int n)//每次调用这个函数都会对字符串进行数值的加1 { int index = n-1; int tmp = str[index] - ‘0‘ + 1; int offset = 0; while (index>0){//如果index==0则表示已经超出了最大n位数的值,返回false tmp += offset; if (tmp < 10){ ++str[index]; return true; } else{ str[index] = (tmp % 10) + ‘0‘; offset = tmp / 10; } --index; tmp = str[index] - ‘0‘; } return false; } void PrintNum(char*& str,int n) { int i = 0; while (str[i] == ‘0‘) ++i; while (i < n+1){ cout << str[i]; ++i; } cout << endl; } void Print1ToNdigits(int n) { if (n < 1)return; char* str = new char[n + 1]; memset(str, ‘0‘, sizeof(char)*(n + 1)); while (Incerment(str,n+1)){ PrintNum(str,n); } delete[] str; }
《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
剑指offer——打印从1到最大的n位数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。