題目279:完全平方數

示例1:
輸入: n = 12
輸出: 3
解釋: 12 = 4 + 4 + 4.
輸入: n = 13
輸出: 2
解釋: 13 = 4 + 9.
動態規劃問題,我是首先手動列出來前幾個數字的輸入輸出:
輸入 輸出 解釋
n=1, 1, 1
n=2, 2, 1,1
n=3, 3, 1,1,1
n=4, 1, 4
n=5, 2, 4,1
n=6, 3, 4,1,1
n=7, 4, 4,1,1,1
n=8, 2, 4,4
n=9, 1, 9
dp[0]=0;
dp[i]=min(dp[i-i之前的完全平方和]+1);
class Solution {
public:
int numSquares(int n) {
vector<int> dp(n+1, INT_MAX);
dp[0] = 0;
for (int i = 1; i <=n; ++i) {
// 使用tem少進行一次乘法運算
for (int j = 1, tem = 0; tem = j * j, tem <= i; ++j) {
dp[i] = min(dp[i], dp[i-tem] + 1);
}
}
return dp[n];
}
};