原poj上的题目,做过,又重新理了下思路。
只是这个代码太过繁琐。
class Solution {
public:
int GetUglyNumber_Solution(int index) {
if(index == 0)
return 0;
int u[10005];
u[1] = 1;
int ugly2 = 1;
int ugly3 = 1;
int ugly5 = 1;
int num = 1;
while(num < index)
{
int temp2 = u[ugly2] * 2;
int temp3 = u[ugly3] * 3;
int temp5 = u[ugly5] * 5;
if(temp2 <= temp3 && temp2 <= temp5)
{
u[++num] = temp2;
ugly2++;
if(temp2 == temp3)
ugly3++;
if(temp2 == temp5)
ugly5++;
continue;
}
if(temp3 <= temp2 && temp3 <= temp5)
{
u[++num] = temp3;
ugly3++;
if(temp2 == temp3)
ugly2++;
if(temp3 == temp5)
ugly5++;
continue;
}
if(temp5 <= temp3 && temp5 <= temp2)
{
u[++num] = temp5;
ugly5++;
if(temp5 == temp3)
ugly3++;
if(temp2 == temp5)
ugly2++;
}
}
return u[num];
}
};