dp43 最少的完全平方数
给定一个正整数n,请找出最少个数的完全平方数,使得这些完全平方数的和等于n。完全平方指用一个整数乘以自己例如11,22,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。例如:1,4,9,和16都是完全平方数,但是2,3,5,8,11等等不是
输入:5
输出:2
说明:1+4=5
int main() { int n ; scanf("%d",&n); int mx = sqrt(n); if(mx*mx == n) { printf("1"); return 0; } vector<int> dp(n+1,0x3f); dp[0] = 0; for(int i=1;i<=mx;i++) { for(int j=i*i;j<=n;j++) { dp[j] = min(dp[j],dp[j-i*i] + 1); } } printf("%d\n",dp[n]); return 0; }