剑指offer第12题
#include<iostream>
using namespace std;
void printRecur(char* number,int length,int index);
void print(char*number);
//递归打印
void PrintTotalMaxNumber(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;
printRecur(number,n,0);
}
delete [] number;
}
void printRecur(char*number,int length,int index){
if(length - 1 == index){
print(number);
return ;
}
for(int i=index;i<10;i++){
number[index+1] = '0' + i;
printRecur(number,length,index+1);
}
}
// 从第一位非0的开始打印。
void print(char* number){
int i = 0;
while(number[i] == '0')
number++;
cout<< number<< endl;
}
int main(){
int n;
cin>> n;
PrintTotalMaxNumber(n);
return 0;
}

本文提供了一个C++程序实现,用于解决剑指Offer第12题:递归生成并打印所有由n位数字组成的数。通过递归调用,确保每个可能的数字组合都被打印出来,同时优化打印过程,避免输出前导零。
8414

被折叠的 条评论
为什么被折叠?



