解决思路
动态规划

public int numSquares(int n) {int[] dp = new int[n + 1]; // 默认初始化值都为0for (int i = 1; i <= n; i++) {dp[i] = i; // 最坏的情况就是每次+1for (int j = 1; i - j * j >= 0; j++) {dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 动态转移方程}}return dp[n];}
