题解 | #最少的完全平方数#
最少的完全平方数
https://www.nowcoder.com/practice/4b2f5d4c00f44a92845bdad633965c04
#include <iostream> #include<cmath> #include<cstring> using namespace std; const int N = 1e4+10; int f[N]; int w[110]; int main() { memset(f,0x3f,sizeof f); int n; cin>>n; int cnt =0; int k = 0; for(int i=1;i*i<=10000;i++) { w[++cnt]=i*i; } int t =sqrt(n); // for(int i=0;i<=t;i++) // { // f[i][0]=0; // } // cout<<t; f[0]=0; for(int i=1;i<=t;i++) { for(int j=w[i];j<=n;j++) { f[j]=min(f[j],f[j-w[i]]+1); } } // for(int i=1;i<=t;i++) // { // for(int j=0;j<=n;j++) // { // cout<<f[i][j]<<' '; // } // cout<<endl; // } cout<<f[n]; } // 64 位输出请用 printf("%lld")