IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 动态规划01背包问题求解(附c/cpp代码) -> 正文阅读

[数据结构与算法]动态规划01背包问题求解(附c/cpp代码)


1. 问题描述

有 n 种物品和一个容量是 y 的背包,每种物品只有一件。

第 i 种物品的体积是 wi,价值是 vi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值和物品序号。


2. 输入格式

第一行两个整数,N,Y,用空格隔开,分别表示物品种数和背包容积。

接下来有 N 行,每行两个整数wi,vi,用逗号隔开,分别表示第 i 种物品的体积和价值。


3. 输出格式

输出最大价值,物品序列号。


4. 输入样例

3,10
5,8
8,20
4,17

5. 输出样例

最大价值:25
物品序号:3号 1号 

6. 问题分析

请添加图片描述


请添加图片描述


请添加图片描述


7. 代码实现

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

typedef struct {
    int w;
    int v;
}Object;

int main(){
    int n,y;
    char ch;
    cin>>n>>ch>>y;
    Object ob[n+1];
    for(int i=1;i<=n;++i)
        cin>>ob[i].w>>ch>>ob[i].v;//ob[0]未使用
    int arr[n+1][y+1];
    for(int i=0;i<y+1;++i)
        arr[0][i] = 0;
    for(int i=0;i<n+1;++i)
        arr[i][0] = 0;
    for(int i=1;i<n+1;++i)
        for(int j=1;j<y+1;++j){
            arr[i][j] = arr[i-1][j];
            if(ob[i].w <= j)
                arr[i][j] = max(arr[i-1][j],arr[i-1][j-ob[i].w]+ob[i].v);
        }
    vector <int> r;
    int j = y;
    for(int i=n;i>0;--i)
        if (arr[i][j] != arr[i-1][j]){
            r.push_back(i);
            j = j - ob[i].w;
        }
    cout<<"最大价值:"<<arr[n][y]<<endl<<"物品序号:";
    for(vector<int>::iterator it = r.begin();it!=r.end();++it)
        cout<<*it<<"号 ";
    return 0;
}

8. 执行结果

10,30
2,3
5,6
8,6
10,12
6,7
9,11
4,7
6,8
7,8
5,8
最大价值:41
物品序号:107641Process returned 0 (0x0)   execution time : 1.365 s
Press any key to continue.

——————END-2022-04-23——————
———————感谢您的阅读—————————

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:40:34  更:2022-04-24 09:43:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:24:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码