博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
输出1到最大的n位数
阅读量:4224 次
发布时间:2019-05-26

本文共 1564 字,大约阅读时间需要 5 分钟。

例如:输入3,输出 1 ~ 999,必须考虑大数问题

/* 打印从 1到最大的n位数 */bool Increment(char *number){	bool isOverflow = false;	int nTakeOver = 0;	int nLength = strlen(number);	for (int i = nLength-1; i >= 0; i--)	{		int nSum = number[i] - '0' + nTakeOver; //初始置为 0		if (i == nLength - 1) //第一位保证必须是 1			nSum++;		if (nSum >= 10) 		{			if (i == 0)				isOverflow = true;			else			{				nSum -= 10;				nTakeOver = 1;				number[i] = '0' + nSum;			}		}		else		{			number[i] = '0' + nSum;			break;		}	}	return isOverflow;}void PrintNumber(char *number){	bool isBeginning0 = true;	int nLength = strlen(number);	for (int i = 0; i < nLength; ++i)	{		if (isBeginning0 && number[i] != '0') //找到第一位不为0的数字字符			isBeginning0 = false;		if (!isBeginning0)  //从第一位不为0的数字字符开始打印			printf("%c", number[i]);	}	printf("\t");}void PrintToMaxOfNDigits(int n){	if (n <= 0)		return;	char *number = new char[n+1]; //开辟n+1大小的空间	memset(number, '0', n); //前n位置0	number[n] = '\0'; //末尾置为'\0'	while (!Increment(number))		PrintNumber(number);	delete []number;}///* 方法二 */void Print1ToMaxOfNDigitsREcursively(char *number, int length, int index){	if (index == length - 1)	{		PrintNumber(number);		return;	}	for (int i=0; i<10; ++i)	{		number[index+1] = i + '0';		Print1ToMaxOfNDigitsREcursively(number, length, index+1);	}}void Print1ToMaxOfNDigits(int n){	if (n<=0)		return;	char *number = new char[n+1];	number[n] = '\0';	for (int i=0; i<10; ++i)	{		number[0] = i + '0';		Print1ToMaxOfNDigitsREcursively(number, n, 0);	}	delete []number;}void main(){	int n = 3;//	PrintToMaxOfNDigits(n);	Print1ToMaxOfNDigits(n);	}

节选《剑指offer》

转载地址:http://qbkqi.baihongyu.com/

你可能感兴趣的文章
手把手教你用Python处理非平稳时间序列(附代码)
查看>>
爱奇艺蒙版AI:弹幕穿人过,爱豆心中坐
查看>>
大满贯!清华学生超算团队获得国际大学生超级计算机竞赛(SC18)总冠军(附现场视频)...
查看>>
RONG·基础与未来——规模化园区在数据时代如何实现内生增长?
查看>>
收藏 | 最新知识图谱论文清单(附解读、下载)
查看>>
独家 | 一文读懂R中的探索性数据分析(附R代码)
查看>>
独家 | 手把手教你用Python进行Web抓取(附代码)
查看>>
独家 | 提速20倍!3个细节优化Tableau工作簿加载过程(附实例)
查看>>
经济学人:清华大学或将迅速成为全球科研领军者
查看>>
超燃!Apache Flink 全球顶级盛会强势来袭
查看>>
资源 | 机器学习高质量数据集大合辑(附链接)
查看>>
第二届清华大学iCenter量化策略挑战赛开幕!
查看>>
在数据科学人才教育中不断前行: 《大数据系统基础A、B》课程实践项目中期答辩顺利举行...
查看>>
送你一份使用k近邻算法实现回归的实用指南(附代码、链接)
查看>>
独家 | 一文读懂随机森林的解释和实现(附python代码)
查看>>
2018中国AI英雄风云榜:投出你心目中的中国AI领军人!
查看>>
福利 | 学习超级用户运营,都来"U-Time六城巡回沙龙”!
查看>>
手把手教你使用Dygraphs可视化时间序列数据(附代码、链接)
查看>>
清华出品:最易懂的AI芯片报告!
查看>>
独家 | 一文读懂Corda分布式记账技术
查看>>