dp专题16 完全平方数

发布时间:2024年01月19日

本题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目:

思路:

? ? ? ? 这道题与 前面写的零钱兑换一样的思路,只不过,这里需要我们自己添加物品。

代码详解如下:

class Solution {
public:
    const int INF = 0x3f3f3f3f;
    inline int numSquares(int& n) 
{
	vector<int>v;   // 存储完全平方数数组
	for(int i = 1;i*i <= n;++i) v.emplace_back(i*i);

    // 完全背包问题dp
	vector<int>dp(n + 1,INF);
	dp[0] = 0;
	
	for(int &i:v)
	{
		for(int j = i;j <= n;++j)
		{
			dp[j] = min(dp[j],dp[j - i] + 1);
		}
	}
	return dp[n];
}
};

最后提交:

文章来源:https://blog.csdn.net/hacker_51/article/details/135703601
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。