diff --git a/problems/0279.完全平方数.md b/problems/0279.完全平方数.md index 86c3170e..7bc0c2f7 100644 --- a/problems/0279.完全平方数.md +++ b/problems/0279.完全平方数.md @@ -40,7 +40,7 @@ 1. 确定dp数组(dp table)以及下标的含义 -**dp[i]:和为i的完全平方数的最少数量为dp[i]** +**dp[j]:和为j的完全平方数的最少数量为dp[j]** 2. 确定递推公式 @@ -58,7 +58,7 @@ dp[0]表示 和为0的完全平方数的最小数量,那么dp[0]一定是0。 非0下标的dp[j]应该是多少呢? -从递归公式dp[j] = min(dp[j - i * i] + 1, dp[j]);中可以看出每次dp[j]都要选最小的,**所以非0下标的dp[i]一定要初始为最大值,这样dp[j]在递推的时候才不会被初始值覆盖**。 +从递归公式dp[j] = min(dp[j - i * i] + 1, dp[j]);中可以看出每次dp[j]都要选最小的,**所以非0下标的dp[j]一定要初始为最大值,这样dp[j]在递推的时候才不会被初始值覆盖**。 4. 确定遍历顺序 @@ -70,9 +70,9 @@ dp[0]表示 和为0的完全平方数的最小数量,那么dp[0]一定是0。 在[动态规划:322. 零钱兑换](https://programmercarl.com/0322.零钱兑换.html)中我们就深入探讨了这个问题,本题也是一样的,是求最小数! -**所以本题外层for遍历背包,里层for遍历物品,还是外层for遍历物品,内层for遍历背包,都是可以的!** +**所以本题外层for遍历背包,内层for遍历物品,还是外层for遍历物品,内层for遍历背包,都是可以的!** -我这里先给出外层遍历背包,里层遍历物品的代码: +我这里先给出外层遍历背包,内层遍历物品的代码: ```CPP vector dp(n + 1, INT_MAX);