hdu2126(01背包)
来源:互联网 发布:软件设计师考试辅导 编辑:程序博客网 时间:2024/05/20 00:36
链接:点击打开链接
题意:给出n个物品的价值,并且每个物品只能买一次,求m元最多买到的物品的数量和当前数量的种类
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int v[35],dp[35][35][505]; //dp[i][j][k]表示有k块钱,在前i种物品买j个的种类的数量int main(){ int i,j,k,t,n,m,sign; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%d",&v[i]); memset(dp,0,sizeof(dp)); for(i=0;i<=n;i++) for(k=0;k<=m;k++) dp[i][0][k]=1; //一样不买种类是1 for(i=1;i<=n;i++){ for(j=1;j<=i;j++) for(k=m;k>=0;k--){ if(k>=v[i]) dp[i][j][k]+=dp[i-1][j-1][k-v[i]]; dp[i][j][k]+=dp[i-1][j][k]; //加上买和不买当前物品的情况 } } sign=0; for(i=n;i>=1;i--){ if(dp[n][i][m]!=0){ printf("You have %d selection(s) to buy with %d kind(s) of souvenirs.\n",dp[n][i][m],i); sign=1; break; } } if(!sign) puts("Sorry, you can't buy anything."); } return 0;}
0 0
- hdu2126-01背包
- hdu2126(01背包)
- HDU2126 扩展背包 DP
- hdu2126(三维背包)
- HDU2126 二维背包
- hdu2126 Buy the souvenirs 01背包变形 dp
- hdu2126(变形01背包,求方案数)
- hdu2126---Buy the souvenirs(01背包方案数)
- hdu2126 Buy the souvenirs(01背包变化)
- 【01背包方案数】HDU2126-Buy the souvenirs
- hdu2126 Buy the souvenirs(01背包+路径)
- HDU2126:Buy the souvenirs(类01背包)
- hdu2126
- hdu2126 Buy the souvenirs (01)
- HDU2126:Buy the souvenirs(01)
- hdu2126——Buy the souvenirs——————【01背包记录物品最多时种数】
- 背包问题精选(POJ3624+HDU2546+UVA624+POJ2184+HDU2639+POJ2923+HDU3466+HDU2126+UVA674+UVA147+POJ3181+POJ1787)
- HDU2126:Buy the souvenirs
- FZU 1061矩阵连乘
- 16. 3Sum Closest
- Spinner加载自定义Adapter
- leetcode 第221题 Maximal Square
- c++插入运算符和输出运算符的重载
- hdu2126(01背包)
- Xcode快捷键大全
- Qt之QLCDNumber
- 换零钱实现之贪心算法
- FZU 1062洗牌问题
- 数据窗口技巧
- Implement Trie (Prefix Tree)
- linux 文件操作相关命令
- iOS 多线程 各种锁