输入n,打印1到最大的n位数
//#include<iostream>
//#include<cstdlib>
//using namespace std;
void Print1ToMaxOfNDigits(int n)
{
int num=1;
int i=0;
while (i++<n)
num*=10;
for(i=1;i<num;i++)
{
printf("%d\t",i);
}
}
//bool Increment(char* num)
//{
// bool isOverflow=false;
// int TakeOver=0;
// int Length=strlen(num);
// for(int i=Length-1;i>=0;i--)
// {
// int sum=num[i]-'0'+TakeOver;
// if(i==Length-1)
// sum++;
// if(sum>=10)
// {
// if(i==0)
// isOverflow=true;
// else
// {
// sum-=10;
// TakeOver=1;
// num[i]='0'+sum;
//
// }
// }
// else
// {
// num[i]='0'+sum;
// break;
// }
// }
// return isOverflow;
//}
//void printNum(char* num)
//{
// bool isBegining0=true;
// int Length=strlen(num);
// for(int i=0;i<Length;i++)
// {
// if(isBegining0&&num[i]!='0')
// isBegining0=false;
// if(!isBegining0)
// printf("%c",num[i]);
// }
// printf("\t");
//}
//void Print1ToMaxOfNDigits(int n)
//{
// if(n<=0)
// return;
// char* num=new char[n+1];
// memset(num,'0',n);
// num[n]='\0';
// while (!Increment(num))
// {
// printNum(num);
// }
// delete[] num;
//}
//int main()
//{
// Print1ToMaxOfNDigits(10);
// system("pause");
// return 0;
//}
//#include<iostream>
//#include<cstdlib>
//#include<cassert>
//using namespace std;
//bool Increment(char* num)
//{
// bool isOverFlow=false;
// int TakeOver=0;
// int Length=strlen(num);
// for (int i=Length-1;i>=0;i--)
// {
// int Sum=num[i]-'0'+TakeOver;
// if (i==Length-1)
// {
// Sum++;
// }
// if(Sum>=10)
// {
// if(i==0)
// isOverFlow=true;
// else
// {
// Sum-=10;
// TakeOver=1;
// num[i]='0'+Sum;
// }
// }
// else
// {
// num[i]='0'+Sum;
// break;
// }
//
// }
// return isOverFlow;
//}
//void printNum(char* num)
//{
// bool isBegin0=true;
// int Length=strlen(num);
// for(int i=0;i<Length;++i)
// {
// if(isBegin0&&num[i]!='0')
// {
// isBegin0=false;
// }
// if(!isBegin0)
// {
// cout<<num[i];
// }
// }
// cout<<"\t";
//}
//
//void Print1ToMaxOfNDigits(int n)
//{
// if(n<=0)
// return;
// char* num=new char[n+1];
// memset(num,'0',n);
// num[n]='\0';
// while (!Increment(num))//Increment是将字符串表示的num+1
// {
// printNum(num);//打印num
// }
// delete[] num;
//}
//int main()
//{
// Print1ToMaxOfNDigits(5);
// system("pause");
// return 0;
//}
#include<iostream>
#include<cstdlib>
#include<cassert>
using namespace std;
void printNum(char* num)
{
bool isBegin0=true;
int Length=strlen(num);
for(int i=0;i<Length;++i)
{
if(isBegin0&&num[i]!='0')
{
isBegin0=false;
}
if(!isBegin0)
{
cout<<num[i];
}
}
cout<<"\t";
}
void Print1ToMaxOfNDigitsRecursively(char* num,int length,int index)
{
if(index==length-1)
{
printNum(num);
return;
}
for(int i=0 ;i<10;i++)
{
num[index+i]=i+'0';
Print1ToMaxOfNDigitsRecursively(num,length,index+1);
}
}
void Print1ToMaxOfNDigits(int n)
{
if(n<=0)
return;
char* num=new char[n+1];
num[n]='\0';
for (int i=0;i<10;++i)
{
num[0]=i+'0';
Print1ToMaxOfNDigitsRecursively(num,n,0);
}
delete[] num;
}
int main()
{
Print1ToMaxOfNDigits(2);
system("pause");
return 0;
}