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

整体思路:输入数字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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容