剑指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;
}