超级丑数
找到从小到大的数,这些数的质因子只能由指数数组构成,且第一项为1
动态规划
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
vector<int> dp(n + 1);
dp[1] = 1;
int m = primes.size(), k;
vector<int> pos(m, 1);
if (n == 1) return 1;
// int m = primes.size(), k;
for (int i = 2; i <= n; i ++ )
{
int minn = INT_MAX;
vector<int> nums(m);
for (int j = 0; j < m; j ++ )
{
nums[j] = dp[pos[j]] * primes[j];
minn = min(minn, nums[j]);
}
dp[i] = minn;
for (int j = 0; j < m; j ++ )
if (nums[j] == minn)
pos[j] ++ ;
}
return dp[n];
}
};
博客聚焦超级丑数问题,需找出从小到大、质因子仅由指数数组构成且首项为1的数,采用动态规划方法来解决该问题,涉及信息技术领域的算法知识。
1767

被折叠的 条评论
为什么被折叠?



