/*
第一次看这题也是一年前的事儿了。。那时完全想不出来那么经典的算法。
丑数是另一个数的丑数
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int arr[3000];
void init()
{
arr[1]=1;
int index=1;
int index2=1;
int index3=1;
int index5=1;
while(index<=1500)
{
int t1=2*arr[index2];
int t2=3*arr[index3];
int t3=5*arr[index5];
int tmp=min(min(t1,t2),t3);
arr[++index]=tmp;
if(tmp==t1)
index2++;
if(tmp==t2)
index3++;
if(tmp==t3)
index5++;
}
}
int main()
{
init();
int n;
while(scanf("%d",&n)!=EOF)
{
cout<<arr[n]<<endl;
}
return 0;
}
剑指offer面试题34丑数 做过不止一次的DP
最新推荐文章于 2024-07-20 20:20:46 发布