思路展示 示例代码 登录后复制 class Solution { public: int numSquares(int n) { vector<int> dp(n+1,INT_MAX); //实际上我们无法表示数字 0,只是为了保证状态转移过程中遇到 j 恰为i^1/2的情况合法。 dp[0]=0; for(int i=1;i<=n;i++){ //j的平方不能超过i for(int j=1;j*j<=i;j++){ //位置i只依赖于i-k^2 dp[i]=min(dp[i],dp[i-j*j]+1); } } return dp[n]; } }; 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16. 效果展示 相似题目 139. 单词拆分 原创作者: u_15305087 转载于: https://blog.51cto.com/u_15305087/11709054