279. 完全平方数

✅装满完全背包的最小物品总价值

仍然如题,不过这一题的每一个物品的价值需要自己算出来\

其余的都是套模板的老生常谈了

class Solution {
public:
    //装满完全背包后物品的最小总价值
    int numSquares(int n) {
        vector<int>value;
        vector<int>dp (n + 1, 99999);
        dp[0] = 0;
        for (int i = 1; i <= sqrt(n); i++) {
            //这里i * i就是下标为i的物品的价值了,故这里物品下标就只需要遍历到sqrt(i)就够了
            //用<代替<=,可以有效缩短一点时间,所谓积少成多!好习惯总不会有错!
            for (int j = i * i; j < n + 1; j++) {
                dp[j] = min(dp[j], dp[j - i * i] + 1);
            }
        }
        return dp[n];
    }
};
posted @ 2022-04-05 21:38  北原春希  阅读(26)  评论(0)    收藏  举报