打印1到最大的n位数
来源:互联网 发布:淘宝造物节2017图片 编辑:程序博客网 时间:2024/06/05 04:59
//大数问题,n没有限定大小,所以所表示的整数用整形int或者//长整型long long 不能表示,考虑大数问题,最简单的就是用// 字符串或者数组表示大数#include<bits/stdc++.h>using namespace std;bool increment(char* number);void printNumber(char* number);void Print1ToMaxOfNDigitsRecursively(char* number, int length, int index);// ========================方法1===========================void print1ToMaxOfNDigits(int n){ if(n <= 0){ return; } char* number = new char[n+1]; memset(number, '0', n); number[n] = '\0'; while(!increment(number)){ printNumber(number); } delete[] number;}// 字符串number表示一个数字,在 number上增加1// 如果做加法溢出,则返回true;否则为falsebool increment(char* number){ bool isOverFlow = false; int nTakeover = 0; int length = strlen(number); for(int i= lenght-1; i>=0; i--){ int nSum = number[i]-'0' + nTakeover; if(i == length -1){ nSum++; } if(nSum >= 10){ if(i == 0){ isOverFlow = true; } else{ nSum -= 10; nTakeover =1; number[i] = '0'+nSum; } } else{ number[i] = '0' + nSum; break; } } return isOverFlow;}// 字符串number表示一个数字,数字有若干个0开头// 打印出这个数字,并忽略开头的0void printNumber(char* number){ bool isBeginning0 = true; int length =strlen(number); for(int i=0; i< length; i++){ if(isBeginning0 && number[i] != '0'){ isBeginning0 = false; } if(!isBeginning0){ printf("%c", number[i]); } } printf("\t");}//==================================方法2=======================void print1ToMaxOfNDigits_2(int n){ if(n<=0){ return; } char* number = new char[n+1]; number[n] = '\0'; for(int i=0; i<10; i++){ number[0] = '0' + i; Print1ToMaxOfNDigitsRecursively(number, n, 0); } delete[] number;}void Print1ToMaxOfNDigitsRecursively(char* number, int length, int index){ if(index == length -1){ printNumber(number); return; } for(int i=0; i<10; i++){ number[index+1] = '0' + i; Print1ToMaxOfNDigitsRecursively(number, length, index+1); }}
阅读全文
0 0
- 打印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位数
- 编译Hadoop
- React Native 集成极光推送 JPush出现的一些幺蛾子
- 顺序容器部分习题(基础)
- Java集合(二)ArrayList详解
- 微信支付
- 打印1到最大的n位数
- 打包未签名空包
- 【更新】Word组件Spire.Doc 6.0.41发布 | 支持免费下载
- TimeZone的inDaylightTime(Date date) 和getDSTSavings()方法
- android Intent onNewIntent 什么时候调用
- Running WFSTAT and WFRETRY For Oracle Purchasing Workflows (文档 ID 134960.1)
- Retrofit+Rxjava封装类
- Cookie和Session的比较
- Web.config详解+asp.net优化