首页 > 学院 > 开发设计 > 正文

【面试题】剑指offer 12

2019-11-06 08:08:28
字体:
来源:转载
供稿:网友

输入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;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表