hdu 2126 Buy the souvenirs
来源:互联网 发布:广数928tc端面切削编程 编辑:程序博客网 时间:2024/04/30 01:35
链接:点击打开链接
题意:n个物品,m元钱,每个物品最多买一次,问最多可以买几件物品,并且输出方案数。加一维表示已经买几件物品。
#include<iostream>#include<string.h>#include<algorithm>using namespace std;int main(){int i,j,t,n,m,sum,ans;int dp[510][2],a[40];scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);memset(dp,0,sizeof(dp));for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<=m;i++)//每种物品都有一种选择 dp[i][1]=1;for(i=0;i<n;i++){ for(j=m;j>=a[i];j--){if(dp[j][0]<dp[j-a[i]][0]+1){dp[j][0]=dp[j-a[i]][0]+1;dp[j][1]=dp[j-a[i]][1];}else if(dp[j-a[i]][0]+1==dp[j][0])dp[j][1]=dp[j-a[i]][1]+dp[j][1];}}if(dp[m][0]) printf("You have %d selection(s) to buy with %d kind(s) of souvenirs.\n",dp[m][1],dp[m][0]);else printf("Sorry, you can't buy anything.\n"); }return 0;}
第二种:dp[i][j][k]表示前i种,买了j个,花了k元的方案数有几种。动态规划方程if(k>=a[i]) dp[i][j][k]+=dp[i-1][j-1][k-a[i]];dp[i][j][k]+=dp[i-1][j][k];
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int dp[35][35][550];int main(){int i,j,k,t,n,m,a[35],x,y;scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);for(i=1;i<=n;i++)scanf("%d",&a[i]);memset(dp,0,sizeof(dp));for(i=0;i<=n;i++)//初始化 for(j=0;j<=m;j++)dp[i][0][j]=1;for(i=1;i<=n;i++){for(j=1;j<=i;j++){for(k=m;k>=0;k--){if(k>=a[i]) dp[i][j][k]+=dp[i-1][j-1][k-a[i]]; dp[i][j][k]+=dp[i-1][j][k];}}} x=-1;y=-1;for(i=1;i<=n;i++){for(j=1;j<=n;j++){for(k=m;k>=0;k--){if(dp[i][j][k]){x=j;y=dp[i][j][k];break;}}}}if(x!=-1) printf("You have %d selection(s) to buy with %d kind(s) of souvenirs.\n",y,x); else printf("Sorry, you can't buy anything.\n");}return 0;}
- hdu 2126 Buy the souvenirs
- hdu 2126 Buy the souvenirs
- Buy the souvenirs(hdu(2126)
- HDU 2126 Buy the souvenirs
- HDU 2126 Buy the souvenirs
- HDU 2126 Buy the souvenirs
- hdu 2126 Buy the souvenirs
- HDU - 2126 Buy the souvenirs
- hdu 2126 Buy the souvenirs
- Buy the souvenirs - HDU 2126 背包dp
- HDU 2126 - Buy the souvenirs(01背包)
- HDU-2126 Buy the souvenirs (DP)
- hdu 2126 Buy the souvenirs 01背包
- 2126 Buy the souvenirs
- HDU 2126 Buy the souvenirs (dp 二维01背包)
- hdu 2126 Buy the souvenirs(二维0/1背包)
- HDU 2126 Buy the souvenirs(DP:01背包)
- hdu 2126 Buy the souvenirs(求方案数)
- window下(或Ubuntu下)Sublime Text 2.01注册码license key
- 自制Runtime:虚拟执行环境设计
- 非root用户安装python3.3和django1.5安装问题
- jsp中文乱码
- 折半查找,喔~折半查找
- hdu 2126 Buy the souvenirs
- Android LayOut布局
- java读写文件
- Agile Web Development with Rails第八章笔记——任务C:商品目录显示
- String类方法汇
- 无题
- 教你快速打造一个有设计感的网站
- jsp参数乱码
- 数组元素限定条件下的最大距离