✎
编程开发网
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
当前位置:
首页
->
AI编程基础
->
c++编程基础
HDU 2126 Buy the souvenirs(二)
2015-07-20 18:02:26
·
作者:
·
浏览:
11
标签:
HDU
2126
Buy
the
souvenirs
sing namespace std; int a[35]; int dp[35][505]; int mark[35][505]; int main(){ int T; scanf("%d",&T); while(T--){ int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=0;i<=n;i++){ for(int j=0;j<=m;j++){ mark[i][j]=1; } } for(int i=0;i<=n;i++){ dp[i][0]=0; } for(int i=0;i<=m;i++){ dp[0][i]=0; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dp[i][j]=dp[i-1][j]; mark[i][j]=mark[i-1][j]; if(j>=a[i]){ if(dp[i-1][j-a[i]]+1>dp[i][j]){ dp[i][j]=dp[i-1][j-a[i]]+1; mark[i][j]=mark[i-1][j-a[i]]; } else if(dp[i][j]==dp[i-1][j-a[i]]+1){ mark[i][j]=mark[i-1][j]+mark[i-1][j-a[i]]; } } } } if(dp[n][m]) printf("You have %d selection(s) to buy with %d kind(s) of souvenirs.\n",mark[n][m],dp[n][m]); else printf("Sorry, you can't buy anything.\n"); } return 0; }
??
首页
上一页
1
2
下一页
尾页
2
/2/2