美文网首页
打印1到最大n位数(算法)

打印1到最大n位数(算法)

作者: 曲终人散Li | 来源:发表于2016-05-21 08:20 被阅读108次

整体思路:输入数字n,开始通过字符数组来组装数据,例如输入4,最终得到的字符数组就是char *str = [9,9,9,9];,打印的时候就从数组的0位开始拼接到n-1位,完成输出。

include <iostream>

include <cstring>

using namespace std;

bool Increment(char *str,int length){
if (str == NULL && length<1) {
return false;
}
int sum = str[length-1]-'0'+1;
if (sum<10) {
str[length-1]+=1;
return true;
}else{
if (length-1==0) {
return false;
}
str[length-1]='0';
return Increment(str, length-1);
}
}

void print(char * str){

bool isBegin = false;
int i;
for (i=0; i<strlen(str); i++) {
    if (!isBegin && str[i]!='0') {
        isBegin=true;
    }
    if (isBegin) {
        cout<<str[i];
    }
}
cout<<endl;

}

void toMaxN(int n){
if (n>=1) {
char *str = new char[n+1];
memset(str, '0', n);
str[n]='\0';
while (Increment(str, n)) {
print(str);
}
delete []str;
}

}

int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "打印1到最大n位数:\n";

toMaxN(3);

return 0;

}

相关文章

网友评论

      本文标题:打印1到最大n位数(算法)

      本文链接:https://www.haomeiwen.com/subject/hxanrttx.html