LeetCode 279.完全平方数
ways:
动态规划
dp[i] : 代表i最少由几个完全平方数组成
初始化:
dp[0] : 0
dp[i] : i // 最差情况是由i个1组成
递推公式:
dp[i] = min(dp[i],dp[i-j*j]+1) // ‘‘寻找距离i最近的完全平方数‘’
完整代码:
class Solution {
public:
int numSquares(int n) {
vector<int> dp(n+1,0);
for(int i=1;i<=n;i++)
{
dp[i] = i; // 最坏的情况,dp[i] = i;即由i个1相加而成
for(int j=1;j*j<=i;j++)
{
dp[i] = min(dp[i],dp[i-j*j] + 1);
}
}
return dp[n];
}
};