首页 > 代码库 > URAL 1073 Square Country(DP)
URAL 1073 Square Country(DP)
题目链接
题意 :这个人要投资地,每块地都是正方形并且边长都是整数,他希望他要买的地尽量的少碎块。每买一块地要付的钱是边长的平方,而且会得到一个一份证书,给你一个钱数,让你求出能得到的证书个数。
思路 :其实就是求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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。