(动态规划 完全背包 **)leetcode279完全平方数

翻译:这里就是在一个只有完全平方数,1,4,9,16的集合里面找到和为n的最少的和数,因为值无限取,所以用完全背包。

求最优方案和,最优值,排列组合数三类动态规划是不同的

这里是最优方案和所以加1而不是加n

cpp 复制代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

//在nums中取值可重复和为target的最小和数的数量

int main() {
    vector<int> nums = { 1,4,9 };
    int target = 13;
    vector<int>dp(target+1, INT_MAX);
    dp[0] = 0;//j==0时没办法把东西放包里
    for (auto n : nums)
        for (int j = n;j <=target;j++)
    {
            if(n<=j)
            dp[j] = min(dp[j],dp[j - n]+1);//这里是求数量不是求最优值所有加1而不是n
        
    }
    for (auto n : dp)
    {
        cout << n << endl;
    }

    return 0;
}

答案

cpp 复制代码
class Solution {
public:
    int numSquares(int n) {
        int i=1;
        int p=i;
        vector<int>dp(n+1,INT_MAX/2);
        dp[0]=0;
        while(p<=n)
        {

            for(int j=p;j<=n;j++)
            {
                dp[j]=min(dp[j],dp[j-p]+1);
            }


            i++;
            p=pow(i,2);
        }
        return dp[n];
    }
};
相关推荐
得一录几秒前
Python 算法高级篇:布谷鸟哈希算法与分布式哈希表
python·算法·aigc·哈希算法
啊吧啊吧abab2 分钟前
二分查找与二分答案
c++·算法·二分
AC赳赳老秦4 分钟前
2026 智能制造趋势:DeepSeek 助力“黑灯”工厂运营,实现生产流程自动化
网络·数据结构·算法·安全·web安全·prometheus·deepseek
流云鹤8 分钟前
2026牛客寒假算法基础集训营6(K H G B A)
算法
程序员酥皮蛋10 分钟前
hot 100 第三十题 30. 两两交换链表中的节点
数据结构·算法·leetcode·链表
寻寻觅觅☆11 分钟前
东华OJ-基础题-131-8皇后·改(C++)
c++·算法·深度优先
程序员徐师兄19 分钟前
基于 Python 深度学习的电影评论情感分析算法
python·深度学习·算法·电影情感分析算法·评论情感分析
ShineWinsu33 分钟前
对于C++中list的详细介绍
开发语言·数据结构·c++·算法·面试·stl·list
_OP_CHEN34 分钟前
【算法提高篇】(三)线段树之维护更多的信息:从基础到进阶的灵活运用
算法·蓝桥杯·线段树·c/c++·区间查询·acm/icpc·信息维护
mjhcsp34 分钟前
C++Lyndon 分解超详解析
c++·算法·lyndon