打印从1到最大的n位数(考虑大数问题)

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");
}

  

posted @ 2013-11-17 11:16  姚来飞  阅读(234)  评论(0编辑  收藏  举报