题目链接:LeeCode279完全平方数
题目描述:
将平方小于n的平方数存起来,然后相当于背包里面的重量,价值相当于1,每次取小的价值,背包有不懂的可以去看背包问题详解
class Solution {
public static int numSquares(int n) {
int[] dp=new int[n+1];
Arrays.fill(dp,Integer.MAX_VALUE-10);
int cnt= (int) Math.sqrt(n);
int[] nn=new int[cnt+1];
for (int i = 1; i <= cnt; i++) {
nn[i]=i*i;
}
dp[0]=0;
for (int i = 0; i < nn.length; i++) {
for (int j = nn[i]; j <= n; j++) {
dp[j]=Math.min(dp[j-nn[i]]+1,dp[j]);
}
}
return dp[n];
}
}