博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3624 01背包
阅读量:4353 次
发布时间:2019-06-07

本文共 930 字,大约阅读时间需要 3 分钟。

初学DP,用贪心的思想想解题,可是想了一个多小时还是想不出。

//在max中的两个参数f[k], 和f[k-weight[i]]+value[i]都是表示在背包容量为k时的最大价值			//f[k]是这个意思,就不用说了。			//而f[k-weight[i]]+value[i]也表示背包容量为k时的最大价值是为什么呢?			//首先,f[k-weight[i]]表示的是背包容量为k-weight[i]的容量,也就是说f[k-weight[i]]			//表示的是容量还差weiht[i]才到k的价值,+walue[i]恰好弥补了差的这个价值。所以……			//如果你对f[k]=max(f[k],(f[k-weight[i]]+value[i]));这句话不是很清楚,			//下面的这句代码会对你有帮助			//cout<<"i="<
<<" f["<
<<"]="<
<

  

#include 
using namespace std;int f[12881];int main(){ int Num, TotalWeight, i, j, k, weight[12881], value[12881]; cin >> Num >> TotalWeight; for(i = 0; i < Num; ++i) cin >> weight[i] >> value[i]; for(i = 0; i < Num; ++i){ for(k = TotalWeight; k >= weight[i]; --k){ f[k] = max(f[k], (f[k - weight[i]] + value[i])); } } cout << f[TotalWeight] << endl; return 0;}

转载于:https://www.cnblogs.com/wushuaiyi/p/3858082.html

你可能感兴趣的文章
C#&java重学笔记(函数)
查看>>
14软件G2班
查看>>
bzoj 1977 [BeiJing2010组队]次小生成树 Tree
查看>>
bzoj 2119 股市的预测——枚举长度的关键点+后缀数组
查看>>
maven:新建的maven工程需要添加一下插件
查看>>
改变和恢复view的方向
查看>>
C#调用金数据API
查看>>
Convert Sorted List to Binary Search Tree
查看>>
Leetcode:Unique Binary Search Trees
查看>>
D3.js 绘制散点图
查看>>
HTML—链接
查看>>
将进程设置为守护进程
查看>>
用连接池提高Servlet访问数据库的效率
查看>>
luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )
查看>>
树的数据结构
查看>>
MyEclipse导入Color Theme
查看>>
Vue开发微信H5 微信分享签名失败问题解决方案
查看>>
Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法
查看>>
Python(2.7.6) glob - 匹配指定模式的文件
查看>>
HTTP - 持久连接
查看>>