HDOJ2546 饭卡(0/1背包)
来源:互联网 发布:大圣美人进阶数据 编辑:程序博客网 时间:2024/05/31 18:36
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2546
根据题目,当只剩下5元的时候,肯定选择最贵的菜。
所以,直接用5元买最贵的菜,剩下的钱没有限制,所以直接用0/1背包解就可以了
/*HDOJ2546作者:陈佳润2013-04-17*/#include<iostream>#include<string.h>using namespace std;#define max(a,b) (a>b?a:b)int good[1005];//菜的价格int dp[50005];//dp数组int n;//菜的种类数目int m;//卡的越void Zero_One_Pack(int value,int weight){//0/1背包int j;for(j=m;j>=weight;j--){dp[j]=max(dp[j],dp[j-weight]+value);}}int main(){int i,maxIndex,maxValue;//freopen("1.txt","r",stdin);while(cin>>n&&n){for(i=1;i<=n;i++)//读取菜的价格cin>>good[i];cin>>m;//读取卡余额if(m<5){//如果卡不足5元cout<<m<<endl;continue;}//找出最贵的菜maxIndex=1;maxValue=good[1];for(i=2;i<=n;i++){if(maxValue<good[i]){maxValue=good[i];maxIndex=i;}}good[maxIndex]=0;//选中那个菜,所以让它的价格变成0,相当于删掉它m-=5;//花了5块去点那个最贵的memset(dp,0,sizeof(dp));//初始化for(i=1;i<=n;i++)//背包Zero_One_Pack(good[i],good[i]);cout<<m-dp[m]+5-maxValue<<endl;}return 0;}
- HDOJ2546 饭卡(0/1背包)
- hdoj2546饭卡(背包01)
- 饭卡(HDOJ2546)
- 01背包 加 贪心 HDOJ2546饭卡
- HDOJ2546 饭卡
- hdoj2546 饭卡
- hdoj2546饭卡
- 饭卡hdoj2546
- HDOJ2546
- 背包问题(0/1背包,完全背包)
- 背包问题(二):0-1背包
- (背包一)0-1背包问题
- 0-1背包 饭卡
- 【转】背包问题总结(0-1背包+完全背包+多重背包)
- 背包问题总结(0-1背包+完全背包+多重背包)
- 【转】背包问题总结(0-1背包+完全背包+多重背包)
- 背包问题 (0-1背包,多重背包,完全背包)
- 模板①:背包问题(0-1背包&完全背包&多重背包)
- uva 10827 - Maximum sum on a torus(最大子矩阵升级版)
- DetailsView分页显示数据
- 序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用
- 我的革命史,三年来的总结(一)
- 常用正则表达(二)
- HDOJ2546 饭卡(0/1背包)
- 内存对齐
- C++对话系列(一)智能指针 auto_ptr再回忆
- 排序算法之四归并排序
- 模板类友元函数
- 【Android】MTK Android 修改默认日期时间
- 离散化的STL实现代码
- ubuntu 中文拼音输入法安装
- 虚拟键码对照表