自己没想到遍历dp,有点像判断素数的问题;
哎,降至了;
寻找可能的平方数,转换成子问题;
具体代码:class Solution {
public:
int numSquares(int n) {
int cnt=0;
vectordp(n+1,0);
for(int i=1;i<=n;i++){
int len=sqrt(i);
dp[i]=INT_MAX;
for(int j=1;j<=len;j++){
dp[i]=min(dp[i],dp[i-j*j]+1);
}
}
return dp[n];
}
};



