17 lines
509 B
C++
17 lines
509 B
C++
#include <bits/stdc++.h>
|
||
using namespace std;
|
||
const int N = 1e5 + 10;
|
||
int n;
|
||
int f[N]; // 状态表示:f[i]表示i个数最少需要多少个平方数
|
||
|
||
int main() {
|
||
cin >> n;
|
||
for (int i = 1; i <= n; i++) {
|
||
f[i] = i; // 初始化,i个数最少需要i个平方数,因为最坏的情况就是每个数都是1
|
||
|
||
for (int j = 1; j <= sqrt(i); j++) // 枚举完全平方数
|
||
f[i] = min(f[i - j * j] + 1, f[i]); // 状态转移方程
|
||
}
|
||
cout << f[n] << endl;
|
||
return 0;
|
||
} |