标签:整数 cep one hat each eof ota strong color
传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1028
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 24967 Accepted Submission(s): 17245
#include<bits/stdc++.h> using namespace std; typedef long long LL; #define max_v 125 /*LL f(int n,int m) { if(n==1||m==1) return 1; else if(n==m&&n>1) { return f(n,n-1)+1; }else if(n<m) { return f(n,n); }else if(n>m) { return f(n,m-1)+f(n-m,m); } }*/ int main() { LL a[]={0,1,2,3,5,7,11,15,22,30,42,56,77,101,135,176,231,297,385,490,627,792,1002,1255,1575,1958,2436,3010,3718,4565,5604,6842,8349,10143,12310,14883,17977,21637,26015,31185,37338,44583,53174,63261,75175,89134,105558,124754,147273,173525,204226,239943,281589,329931,386155,451276,526823,614154,715220,831820,966467,1121505,1300156,1505499,1741630,2012558,2323520,2679689,3087735,3554345,4087968,4697205,5392783,6185689,7089500,8118264,9289091,10619863,12132164,13848650,15796476,18004327,20506255,23338469,26543660,30167357,34262962,38887673,44108109,49995925,56634173,64112359,72533807,82010177,92669720,104651419,118114304,133230930,150198136,169229875,190569292,214481126,241265379,271248950,304801365,342325709,384276336,431149389,483502844,541946240,607163746,679903203,761002156,851376628,952050665,1064144451,1188908248,1327710076,1482074143,1653668665,1844349560,2056148051,2291320912,2552338241,2841940500}; /*for(int i=1;i<max_v;i++) { printf("%I64d,",f(i,i)); } printf("\n**\n");*/ int n; while(~scanf("%d",&n)) { printf("%I64d\n",a[n]); // printf("%I64d\n",f(n,n)); } return 0; }
2.另外一种做法
记忆化搜索
就是在搜索之前先判断一下,搜过了就不再搜索了
跟dp一个意思
code:
#include<bits/stdc++.h> using namespace std; typedef long long LL; #define max_v 125 int dp[max_v][max_v]; LL f(int n,int m) { if(dp[n][m]!=-1)//判断有没有搜过 return dp[n][m]; if(n==1||m==1) return dp[n][m]=1; else if(n==m&&n>1) { return dp[n][m]=f(n,n-1)+1; }else if(n<m) { return dp[n][m]=f(n,n); }else if(n>m) { return dp[n][m]=f(n,m-1)+f(n-m,m); } } int main() { //两种做法 //LL a[]={0,1,2,3,5,7,11,15,22,30,42,56,77,101,135,176,231,297,385,490,627,792,1002,1255,1575,1958,2436,3010,3718,4565,5604,6842,8349,10143,12310,14883,17977,21637,26015,31185,37338,44583,53174,63261,75175,89134,105558,124754,147273,173525,204226,239943,281589,329931,386155,451276,526823,614154,715220,831820,966467,1121505,1300156,1505499,1741630,2012558,2323520,2679689,3087735,3554345,4087968,4697205,5392783,6185689,7089500,8118264,9289091,10619863,12132164,13848650,15796476,18004327,20506255,23338469,26543660,30167357,34262962,38887673,44108109,49995925,56634173,64112359,72533807,82010177,92669720,104651419,118114304,133230930,150198136,169229875,190569292,214481126,241265379,271248950,304801365,342325709,384276336,431149389,483502844,541946240,607163746,679903203,761002156,851376628,952050665,1064144451,1188908248,1327710076,1482074143,1653668665,1844349560,2056148051,2291320912,2552338241,2841940500}; /*for(int i=1;i<max_v;i++) { printf("%I64d,",f(i,i)); } printf("\n**\n");*/ memset(dp,-1,sizeof(dp));//没有搜索的标记 int n; while(~scanf("%d",&n)) { //printf("%I64d\n",a[n]); printf("%I64d\n",f(n,n)); } return 0; }
HDU 1028 Ignatius and the Princess III 整数的划分问题(打表或者记忆化搜索)
标签:整数 cep one hat each eof ota strong color
原文地址:https://www.cnblogs.com/yinbiao/p/9314581.html