剑指offer34_丑数

来源:互联网 发布:拜发试剂盒软件 编辑:程序博客网 时间:2024/06/04 17:43
<img src="http://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);        }    }}

0 0
原创粉丝点击