1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <vector> using std::vector;
class Solution { public: int numSquares(int n) { int i, j; vector<int> perfect_squares; vector<int> dp(n + 1, n + 1);
for (i = 1; i * i <= n; i++) perfect_squares.push_back(i * i);
dp[0] = 0;
for (i = 1; i <= n; i++) { for (j = 0; j < perfect_squares.size() && perfect_squares[j] <= i; j++) dp[i] = std::min(dp[i], dp[i - perfect_squares[j]] + 1); }
return dp[n]; } };
#include <cstdio> int main() { Solution S; int num = S.numSquares(12); printf("%d\n", num); num = S.numSquares(13); printf("%d\n", num); }
|