My code:
public class Solution {
public int numSquares(int n) {
if (n <= 0)
return 0;
else if (n == 1)
return 1;
int[] dp = new int[n + 1];
dp[1] = 1;
for (int i = 2; i < n + 1; i++) {
int temp = 1;
while (i - temp * temp >= 0) {
dp[i] = (dp[i] == 0 ? dp[i - temp * temp] + 1 : Math.min(dp[i], dp[i - temp * temp] + 1));
temp++;
}
}
return dp[n];
}
}
这道题目我是一遍过的。
他让我想起了 一道更复杂的DP。
coin change
里面也是通过这种办法。
Anyway, Good luck, Richardo!