题目 法1:dp 跟兑换零钱相同思路,对比记忆!!! 跟完全背包问题的解法一致! class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; for (int i = 1; i <= n; ++i) { int min = n; for (int k = 1; k * k <= i; ++k) { min = Math.min(min, 1 + dp[i - k * k]); } dp[i] = min; } return dp[n]; } }