问题 f: 0-1 背包问题(动态规划)
时间限制: 1 Sec 内存限制: 128 MB
提交: 48 解决: 17

题目描述
给定n种物品和一个背包,物品i的重量是Wi,其价值为Vi,问如何选择装入背包的物品,使得装入背包的物品的总价值最大?

在选择装入背包的物品时,对每种物品i只能有两种选择,装入或者不装入,不能装入多次,也不能部分装入。

输入
第一行输入物品的个数n。

第二行输入物品的重量序列w。(中间有空格)

第三行输入物品的价值序列v。(中间有空格)

第四行输入背包容量c。

输出
第一行输出装入背包的物品。(用0和1表示,中间无空格)

第二行输出最大价值。
样例输入

3
3 4 5
4 5 6
10

样例输出

011
11
#include <iostream>
#include <algorithm>
using namespace std;
int n, c;
int w[101], v[101];
int choose[101];
int value[101][101];
void max() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= c; j++) {if (j < w[i])value[i][j] = value[i - 1][j];else value[i][j] = max(value[i - 1][j], value[i - 1][j - w[i]] + v[i]);}}
}
void find(int x, int y) {if (x >= 0) {if (value[x - 1][y] == value[x][y]) { choose[x] = 0; find(x-1,y);}else if ((y - w[x]) >= 0 && value[x][y] == (value[x - 1][y - w[x]] + v[x])) {choose[x] = 1;find(x - 1, y - w[x]);}}}
int main() {cin >> n;for (int i = 1; i <= n; i++)cin >> w[i];for (int i = 1; i <= n; i++)cin >> v[i];cin >> c;max();find(n, c);for (int i = 1; i <= n; i++)cout << choose[i];cout << endl << value[n][c];return 0;
}

01背包【动态规划】相关推荐

  1. C语言(CED)01背包——动态规划第二题

    一.问题描述 给定n种物品和一个背包.物品i的质量Wi,其价值Vi,背包的容量为c.问如何选择装入背包中的物品,使得装入背包中的物品总价值最大? 二.解题思想 01背包和最长公共子序列都是动态规划题目 ...

  2. 1038 01背包动态规划

    #1038 : 01背包 #include <iostream> #include <stdio.h> #include <algorithm>using name ...

  3. 01背包.动态规划.c语言实现

    二维dp数组01背包 确定dp数组以及下标的含义 使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少       2.递推公式:dp[i][ ...

  4. LeetCode 474. 一和零(01背包动态规划)

    1. 题目 在计算机界中,我们总是追求用有限的资源获取最大的收益. 现在,假设你分别支配着 m 个 0 和 n 个 1.另外,还有一个仅包含 0 和 1 字符串的数组. 你的任务是使用给定的 m 个 ...

  5. 0-1背包动态规划c语言,动态规划解决0-1背包问题程序看不懂,请大家看看帮忙解决下...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 c-=w[i]; } } if(m[n][c] >0) flag[n] = 1; else flag[n] = 0; } /* 打印最优解*/ vo ...

  6. Java 01背包【动态规划·蓝桥杯练习题】(相信杨超越,相信锦鲤,默默努力,其它的看天意)

    锦鲤镇楼 1.题目描述: 时间限制:1.0s 内存限制:256.0MB 关键字:01背包 动态规划 问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高 ...

  7. 动态规划之背包问题——01背包

    算法相关数据结构总结: 序号 数据结构 文章 1 动态规划 动态规划之背包问题--01背包 动态规划之背包问题--完全背包 动态规划之打家劫舍系列问题 动态规划之股票买卖系列问题 动态规划之子序列问题 ...

  8. java-01背包(动态规划)

    01背包(动态规划) package cn.dynamic;public class KnapsackProblem {public static void main(String[] args) { ...

  9. 算法-动态规划(01背包)

    最近闲来无事,学学算法. 什么是动态规划,我们要如何描述它? 动态规划算法通常基于一个递推公式及一个或多个初始状态.当前子问题的解将由上一次子问题的解推出.使用动态规划来解题只需要多项式时间复杂度,因 ...

  10. Java入门算法(动态规划篇2:01背包精讲)

    本专栏已参加蓄力计划,感谢读者支持❤ 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算 ...

最新文章

  1. Android java 多线程(三)
  2. Python-OpenCV 处理图像(二):滤镜和图像运算
  3. 如何查阅资料,解决问题(个人的小看法)
  4. jquery选择器和基本操作
  5. 一篇文章,带你全面的了解二叉树-记得点赞
  6. Bootloader概述
  7. 微信小程序 滚动选项卡 swiper高度自适应
  8. python函数返回的元组_python – 从函数返回一个单独的元组元组
  9. Android 音频开发(二) 采集一帧音频数据
  10. 自定义vb.net 窗口位置
  11. win7_32下编译FFmpeg
  12. 易宝支付 -- 微信小程序对接
  13. linux系统有gotoxy函数,linux下有没有类似gotoxy()的函数
  14. 华为网络工程师认证有哪些?值不值得考?
  15. (原创)AD账户误删导致Exchange邮箱被删 莫苦恼
  16. 偶遇RandomAccessFile
  17. MATLAB - 三维图绘制
  18. 扶桑号战列舰(单调栈)
  19. 比较PostgreSQL与MySQL两大开源关系数据库管理系统
  20. python turtle什么意思_python的turtle模块可以画什么

热门文章

  1. OpenCV4 DNN模块 Python APIs
  2. PyTorch中如何使用tensorboard可视化
  3. Boost1.62.0 + VS2015 配置
  4. caffe依赖项安装
  5. 各厂商防火墙初始登录IP及密码信息
  6. IS-IS 的 DIS (伪节点) 及 DIS 和 OSPF中DR 的区别
  7. android gpio驱动实例,Android/Linux 驱动层对GPIO口的操作方法和相关代码
  8. 国考中的电子信息类与计算机类,信息工程属于什么类-电子信息工程在公务员考试中属于计算机类吗 – 手机爱问...
  9. exp oracle所有数据库命令,oracle数据库exp命令
  10. 怎么查看自己电脑的配置_怎么查看自己网卡是千兆网卡还是百兆网卡