HDU 2159 二维完全背包
来源:互联网 发布:在淘宝网怎么投诉卖家 编辑:程序博客网 时间:2024/05/21 07:02
建议同学先看看01背包,完全背包,多重背包和二维背包。
学到的东西就是判别ans这个变量是否变化而判断有没有解。
因为只是一个break不能跳出所有,是不能保证j是最优解的。
AC代码
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;const int maxn=110;const int inf=0x3f3f3f3f;//解决方法是二维完全背包,但题目并不想要完全背包的结果。//人家想要用尽量少的忍耐度和杀尽量少的怪。//所以只要最早dp出来的结果大于他想要的经验值,那就是他想要的结果。int dp[maxn][maxn];int v[maxn];int w[maxn];int main(){ int m,n,k,s; while(scanf("%d%d%d%d",&n,&m,&k,&s)==4)//需要经验、忍耐度、怪种数、最多杀怪数 { memset(dp,0,sizeof(dp)); memset(v,0,sizeof(v)); memset(w,0,sizeof(w)); for(int i=1;i<=k;i++) scanf("%d%d",&v[i],&w[i]); int ans=10000000; bool f=0; for(int i=1;i<=k;i++) { for(int j=w[i];j<=m;j++) { for(int q=1;q<=s;q++) { dp[j][q]=max(dp[j][q],dp[j-w[i]][q-1]+v[i]); if(dp[j][q]>=n&&j<ans) { ans=j; //printf("j=%d获得经验值:%d\n",j,dp[j][q]); } } } } if(ans!=10000000) printf("%d",m-ans); else printf("-1"); printf("\n"); }}
阅读全文
0 0
- hdu 2159 二维背包 完全
- hdu 2159 二维完全背包
- HDU 2159 二维完全背包
- hdu 2159 二维完全背包
- hdu 2159(二维完全背包)
- hdu 2159 二维完全背包
- HDU 2159 二维完全背包
- HDU 2159 FATE【二维背包+完全背包】
- hdu 2159 FATE(二维背包+完全背包)
- FATE hdu 2159 二维的完全背包
- hdu 2159 fate(二维完全背包)
- hdu 2159 二维费用完全背包
- HDU 2159 FATE(二维完全背包)
- 【hdu 2159】 FATE 二维费用完全背包
- hdu 2159 dp(二维完全背包)
- hdu 2159 fate(二维完全背包)
- HDU 2159 FATE (二维费用完全背包)
- hdu 2159 FATE(二维完全背包)
- java学习过程中对抽象类的理解
- (2)直接插入排序
- C#实现验证码编写
- android值制作简易的闹钟和通知栏信息
- 函数式编程扫盲篇
- HDU 2159 二维完全背包
- 【51nod 球与切换器】+ dp
- 《黑客与画家》读书笔记
- Error creating bean with name 'itemController': Injection of resource dependencies failed; nested ex
- I
- 写 SQL 时常犯的 10 个错误
- JS中getElementById()、getElementsByName()、getElementsByTagName() 的区别和应用
- Til the Cows Come Home POJ
- 七月英语——安生