【志银】NYOJ《题目860》又见01背包
2016-05-20 19:32
218 查看
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860
代码实现(点击展开)
[b]开始写于:2016.5.20 ----志银[/b]
#include<iostream> using namespace std; int main() { int n, sw, sv, v[105], w[105], m[10005]; //n为物品数量,sw为总重量,sv为总价值 while(cin >> n >> sw) { //m[j]为最少要拿总价值为j时所拿的最小质量 sv = 0; for(int i = 1; i <= n; i++) { cin >> w[i] >> v[i]; sv += v[i]; } for(int j = 1; j <= 10000; j++) m[j] = 1000000001; //初始化为题目范围内最大值 for(int i = 1; i <= n; i++) { for(int j = sv; j >= 1; j--) { if(j >= v[i]) m[j] = min(m[j], m[j-v[i]]+w[i]); else m[j] = min(m[j], w[i]); //m[j] > 1000000000 ? cout << "+ " : cout << m[j] << " "; //去掉这两行注释可打表结果 } //cout << endl; } int big = 1; //从价值为1开始找所有能拿到的价值 while(big <= sv && m[big] <= sw) big++; cout << big-1 << endl; } }
代码实现(点击展开)
[b]开始写于:2016.5.20 ----志银[/b]
相关文章推荐
- 高度平衡的二叉搜索树(AVL树)
- 文本处理三剑客之sed
- 树链剖分
- javascript road trip3@codeSchool
- 100个生活需正视问题
- dp和px以及sp
- HDOJ3271_SNIBB
- (++a)+=(a++)怎么计算啊?
- 《Linux及安全》实践2
- Linux中常见find命令的使用
- 小笔记
- 黎活明给程序员的忠告
- yii2框架-composer的自动加载
- 9260 USB无线网卡驱动移植
- 跟着官网学solr(一):solr环境的搭建
- 冒泡排序简易代码
- Android之Activity启动和结束方法-传递结果数据
- c语言中出现左操作数必须是左值(摘抄)
- 数据库开启调试模式的时候不能进行数据库字段缓存
- shell小记-检查一个目录是够为空