标签:c style class blog code java
题意 :这个人要投资地,每块地都是正方形并且边长都是整数,他希望他要买的地尽量的少碎块。每买一块地要付的钱是边长的平方,而且会得到一个一份证书,给你一个钱数,让你求出能得到的证书个数。
思路 :其实就是求x12+x22+……+Xn2中的最小的n。
1 //1073 2 #include <stdio.h> 3 #include <iostream> 4 #include <math.h> 5 6 using namespace std ; 7 8 int a[60005] ; 9 10 void dp() 11 { 12 for(int i = 2 ; i <= 60005 ; i++) 13 a[i] = 999999999 ; 14 a[1] = 1; 15 for(int i = 2 ; i <= 60005 ;i++) 16 { 17 for(int j = 1 ; j <= (int)sqrt(i) ; j++) 18 a[i] = min(a[i],a[i-j*j]+1 ); 19 } 20 } 21 int main() 22 { 23 int n ; 24 dp() ; 25 scanf("%d",&n) ; 26 printf("%d\n",a[n]) ; 27 return 0 ; 28 }
URAL 1073 Square Country(DP),布布扣,bubuko.com
标签:c style class blog code java
原文地址:http://www.cnblogs.com/luyingfeng/p/3759335.html