样例
给出 n = 12
, 返回 3
因为 12 = 4 + 4 + 4
。
给出 n = 13
, 返回 2
因为 13 = 4 + 9
。
#include<cmath>
class Solution {
public:
/*
* @param n: a positive integer
* @return: An integer
*/
int numSquares(int n) {
int length = floor(sqrt(n));
// cout << length;
int *result = new int[n+1];
result[0] = 0;
for(int j =1;j<=n;j++){
result[j] = j;
}
for(int i =1;i <=n;i++){
for(int j=1;j<=length;j++){
if(i>=j*j&&result[i-j*j]+1<result[i]){
result[i] = result[i-j*j]+1;
}
}
}
//cout << result[n];
//delete[] result;
return result[n];
}
};