Leetcode:279. 完全平方數
阿新 • • 發佈:2019-02-05
public:
int numSquares(int n) {
return BFS(n);
}
int BFS(int n) {
if (mp[n] > 0) { return mp[n]; }
if (isSquare(n)) {
mp[n] = 1;
return 1;
}
int sq = sqrt(n);
int i;
for (i = 1; i <= sq; i++) {
int n1 = i*i, n2 = n - n1;
if (isSquare(n2)) {
mp[n] = 2;
return 2;
}
}
int min = INT_MAX;
for (i = 1; i <= sq; i++) {//當前選擇i*i
int temp = BFS(n - i*i) + 1;
min = (temp < min ? temp : min);
}
mp[n] = min;
return min;
}
bool isSquare(int n) {
int sq = sqrt(n);
return (n - sq*sq)==0;
}
private:
unordered_map<int, int>mp;
};