UVA 242 记忆化搜索
来源:互联网 发布:手机ip修改软件 编辑:程序博客网 时间:2024/06/15 13:09
题意
每次最多可以选S张邮票,有N个邮票组合,邮票组合从组合值为1开始组合,到出现不连续的组合值终止。问能构成最大组合值的组合是哪个?
题解
设dp[c][n]为还可选N张邮票,是否能组成值为C的组合。对于dp[c][n],类似于背包问题,看dp[c-stamp[re][i]][n-1]是否可行,若可行,则dp[c][n]可行,反之则不可行。
注意事项
本题输出格式较为怪异,需要特别注意。
代码
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#define INF 1e9using namespace std;int stamp[15][110];int dp[1100][15];bool dfs(int re,int c,int n){ if(dp[c][n]!=-1){ return dp[c][n]; } if(!c){ dp[c][n]=true; return true; } if(!n){ dp[c][n]=false; return false; } for(int i=1;i<=stamp[re][0];i++){ if(c>=stamp[re][i]&&dfs(re,c-stamp[re][i],n-1)){ dp[c][n]=true; return true; } } dp[c][n]=false; return false;}int cmp(int a,int b){ if(stamp[a][0]<stamp[b][0]) return a; else if(stamp[a][0]>stamp[b][0]) return b; for(int i=stamp[a][0];i>0;i--){ if(stamp[a][i]<stamp[b][i]){ return a; }else{ return b; } } return a;}int main(){ int s,n; while(scanf("%d",&s)){ if(s==0) break; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&stamp[i][0]); for(int j=1;j<=stamp[i][0];j++) scanf("%d",&stamp[i][j]); } int k=0; int ans=0; for(int i=0;i<n;i++){ memset(dp,-1,sizeof(dp)); int m=0; for(int j=1;;j++){ if(dfs(i,j,s)){ m=j; }else{ break; } } if(m==ans){ k=cmp(k,i); } if(m>ans){ ans=m; k=i; } } printf("max coverage =%4d :",ans); for(int i=1;i<=stamp[k][0];i++){ printf("%3d",stamp[k][i]); } printf("\n"); } return 0;}
0 0
- UVA 242 记忆化搜索
- uva 10285 记忆化搜索
- uva 707(记忆化搜索)
- uva 607 记忆化搜索
- uva 10118 记忆化搜索
- UVA 10285 记忆化搜索
- UVA 1630 记忆化搜索
- UVA 1631 记忆化搜索
- UVA 116记忆化搜索
- UVa 11468 AC自动机+记忆化搜索
- 记忆化搜索 uva-10651-Pebble Solitaire
- UVA Cutting Sticks(记忆化搜索)
- UVA 607 (dp记忆化搜索)
- UVA 10604 (记忆化搜索 + hash)
- UVA 709 Formatting Text(记忆化搜索)
- UVa 10617 Again Palindromes / 记忆化搜索
- UVa 103 Stacking Boxes / 记忆化搜索
- UVA 707 - Robbery(记忆化搜索)
- js获取网页屏幕可见区域高度
- Activity has leaked window that was originally added
- org.apache.subversion.javahl.ClientException: Previous operation has not finished
- 282. Expression Add Operators
- mybatis自动生成代码
- UVA 242 记忆化搜索
- 梦行monxin全网通商城系统 收银管理系统功能介绍
- HTML5基础加强css样式篇(float补充,清除浮动解决高度塌陷问题,定位补充)(一)
- 关于实现V2X的一小步
- ui字体 pt 和 前端字体 px 之间的转化
- Android中多进程方式导致的全局Application的OnCreate多次被调用
- 关于Gson定制的分析
- Android开发之CoordinatorLayout使用详解二(图解)
- settimeout和settimeinterval的区别和应用实践