void Print1ToMaxOfNDigits(int n)
{
if(n <= 0)
{
return;
}
int * number = new int[n];
for(int i = 0;i < n;i++)
{
number[i] = 0;
}
int highestDigit = 0;
while(Increase(number,n,&highestDigit))
{
PrintNumber(number,highestDigit);
}
}
// 加1,并返回操作是否成功
bool Increase(int number[],int n,int * highestDigit)
{
for(int i = 0;i <= *highestDigit;i++)
{
if(number[i] < 9)
{
number[i]++;
return true;
}
else
{
number[i] = 0;
}
}
if(*highestDigit < n - 1)
{
(*highestDigit)++;
number[*highestDigit] = 1;
}
else
{
return false;
}
}
void PrintNumber(int number[],int highestDigit)
{
for(int i = highestDigit;i >= 0;i--)
{
printf("%d",number[i]);
}
printf("\n");
}