剑指offer34_丑数
2016-08-24 21:48
288 查看
<img src="https://img-blog.csdn.net/20160824215125107?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
/*********************************************************************** *@time 2016/08/24 21:01 *@place DHU.13.5005 *@description 得出第i个丑数 *************************************************************************/ #include<cstdio> #include<stdlib.h> #include<algorithm> using namespace std; int get_Ugly_Number(int* ugly_Numbers,int nth_Ugly_Number) { ugly_Numbers[0]=1; int* ugly_Numbers2=ugly_Numbers; int* ugly_Numbers3=ugly_Numbers; int* ugly_Numbers5=ugly_Numbers; int index=1; while(index<nth_Ugly_Number) { int next_Ugly_Number=min(min(*ugly_Numbers2*2,*ugly_Numbers3*3),*ugly_Numbers5*5); ugly_Numbers[index]=next_Ugly_Number; while(*ugly_Numbers2*2<=next_Ugly_Number) ugly_Numbers2++; while(*ugly_Numbers3*3<=next_Ugly_Number) ugly_Numbers3++; while(*ugly_Numbers5*5<=next_Ugly_Number) ugly_Numbers5++; index++; } int result=ugly_Numbers[nth_Ugly_Number-1]; return result; } int main() { int max_Search_Index=-1; int nth_Ugly_Number; int* ugly_Numbers=NULL; while(scanf("%d",&nth_Ugly_Number)) { if(nth_Ugly_Number<=max_Search_Index) { int ugly=ugly_Numbers[nth_Ugly_Number-1]; printf("%d\n",ugly); } else { max_Search_Index=nth_Ugly_Number; delete[] ugly_Numbers; ugly_Numbers=new int[nth_Ugly_Number]; int ugly=get_Ugly_Number(ugly_Numbers,nth_Ugly_Number); printf("%d\n",ugly); } } }
相关文章推荐
- 一个关于if else容易迷惑的问题
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- 一道sql面试题附答案
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C# 超高面试题收集整理
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解