`
Lisajoy512
  • 浏览: 10254 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

01背包问题

阅读更多
题目:容量为9的背包,有4种物品,体积分别为2,3,4,5,价值分别为3,4,5,7,求能放进背包的最大值。

#include <iostream>
using namespace std;

#define MAXSIZE 9
#define NUM 4

int main(void)
{
    int size_value[5][2] = { {0,0},{2,3},{3,4},{4,5},{5,7} };
    int solution[NUM + 1][MAXSIZE +1];

    for(int p=0;p<=NUM;p++)
    {
        for (int q=0;q<=MAXSIZE;q++)
        {
            solution[p][q]=0;
        }
    }

    for(int i = 1;i <=NUM;i++)
    {
        for (int j = 0;j<=MAXSIZE;j++)
        {
            solution[i][j] = solution[i-1][j];
            if(size_value[i][0] <= j )
            {
                if(solution[i-1][j] < (solution[i-1][j-size_value[i][0]] + size_value[i][1])) 
                   solution[i][j] =  solution[i-1][j-size_value[i][0]] + size_value[i][1];             
            }
       }
    }

    for(int p=0;p<=NUM;p++)
    {
        for(int q=0;q<=MAXSIZE;q++)
       {
           cout<<solution[p][q]<<" ";
       }
       cout<<"\n";
    }
    cout<<"The Max Value is : "<<solution[NUM][MAXSIZE];
    while(1);
    return 0;
}


关于动态规划的算法,一定要在纸上画出计算公式。
关于此算法要注意的一点是:4个物品,最好定义一个5行2列的数组,后面就能与solution[NUM][MAXSIZE}对应上,关于i+1,i,i-1的问题要尤其注意
0
1
分享到:
评论
1 楼 wukunlsy 2011-10-20  

相关推荐

    01背包问题的C语言代码

    01背包问题是一种经典的计算机科学优化问题,常用于求解有限资源下的最佳分配策略。它在实际生活中的应用广泛,比如商品装箱、任务调度、投资组合优化等场景。在这个问题中,我们有一系列物品,每个物品都有一个价值...

    用回溯法解决01背包问题C语言实现

    01背包问题是一种在计算机科学和运筹学中常见的优化问题,主要涉及到组合优化和动态规划。在这个问题中,我们有n个物品,每个物品都有一个重量w[i]和一个价值v[i],以及一个容量为W的背包。目标是选择物品放入背包,...

    01背包问题(动态规划法).pdf

    "01背包问题(动态规划法)" 本文将详细介绍动态规划法解决01背包问题的算法设计思想、算法改进思想、存储结构、算法实现等内容。动态规划是一种非常重要的算法方法,广泛应用于经济管理、生产调度、工程技术和最优...

    分治法求01背包问题c语言

    01背包问题是一种经典的组合优化问题,常出现在计算机科学、运筹学以及算法设计与分析中。它描述了这样一个场景:我们有一组物品,每件物品都有一定的重量和价值,现在有一个容量有限的背包,我们需要决定选取哪些...

    回溯法和动态规划法解01背包问题

    01背包问题是一种经典的组合优化问题,经常在计算机科学,特别是在算法设计和分析中出现。这个问题的基本设定是:你有一组物品,每种物品都有一个重量和一个价值,以及一个固定容量的背包。目标是在不超过背包容量的...

    01背包问题_01背包问题_

    01背包问题是一种经典的组合优化问题,广泛应用于资源分配、任务调度等领域。在这个问题中,我们有一个容量为W的背包,以及n件物品,每件物品都有一个重量w[i]和一个价值v[i]。目标是选取不超过背包容量的物品,使得...

    利用动态规划解决01背包问题

    利用动态规划解决01背包问题 动态规划是一种非常重要的算法方法,它可以用来解决许多复杂的问题,例如经济管理、生产调度、工程技术和最优控制等方面的问题。01背包问题是动态规划的经典模型之一,它可以用于解决...

    Python基于回溯法解决01背包问题实例

    在计算机科学中,优化问题经常需要求解一个有限的解空间,01背包问题就是这类问题的一个典型例子。01背包问题涉及到在一个有限的容量限制下,如何选择物品以最大化价值。这个问题可以通过多种方法解决,其中回溯法是...

    01背包问题 回溯法

    01背包问题是一种经典的组合优化问题,常在计算机科学、运筹学以及算法设计与分析中出现。在这个问题中,我们有一组物品,每种物品都有一个重量和一个价值,我们的目标是在不超过背包总容量的前提下,选取物品以最大...

    贪婪法解决01背包问题

    贪婪法解决01背包问题贪婪法解决01背包问题贪婪法解决01背包问题贪婪法解决01背包问题

    01背包问题回溯法解决子集树

    01背包问题是一种经典的组合优化问题,经常出现在计算机科学、运筹学以及算法设计与分析中。在这个问题中,我们有n个物品,每个物品都有一个重量w[i]和一个价值v[i],以及一个容量为W的背包。目标是选择物品的子集,...

    01背包问题的贪心算法.pdf

    ### 01背包问题的贪心算法 #### 一、问题背景及定义 01背包问题是一种经典的组合优化问题,在计算机科学与运筹学领域有着广泛的应用。该问题描述如下:给定一组物品,每个物品都有一个重量\( w_i \)和一个价值\( v...

    分支限界算法 01背包问题

    在解决01背包问题时,分支限界法是一种非常有效的方法。01背包问题是一个经典的组合优化问题,目标是确定如何在容量有限的背包中放入物品以最大化总价值,其中每种物品都有一个重量和一个价值,且物品只能被完全取走...

    C++分支限界法(BFS求解01背包问题)

    本主题将深入探讨如何使用C++编程语言,结合分支限界法(通常与广度优先搜索BFS相结合)来解决01背包问题。 01背包问题是一个经典的组合优化问题,其核心是给定一组物品,每件物品有重量和价值,目标是在不超过背包...

    93、1267:【例9.11】01背包问题(2020.03.17)a.pdf

    在给定文件中,我们可以提取到关于01背包问题的知识点。01背包问题是一个经典的动态规划问题,在计算机科学和运筹学中有广泛应用,尤其在算法竞赛如NOIP(全国青少年信息学奥林匹克竞赛)和少儿编程中十分常见。问题...

    01背包问题穷举法

    其中,“01背包问题”是最基础的一种形式。 **01背包问题定义** 01背包问题得名于每个物品只能被完全放入或完全排除,即每种物品的数量是“0”或“1”,不能分割。具体来说,我们有一组物品,每种物品都有一个重量...

    C++编写的01背包问题

    01背包问题是一种经典的计算机科学优化问题,常用于学习和研究动态规划算法。在这个问题中,我们有一个容量有限的背包,以及一系列物品,每个物品都有一个重量和一个价值。目标是选择一部分物品装入背包,使得背包总...

    非01背包问题

    非01背包问题,也称为部分背包问题或有界背包问题,是背包问题的一个变种。在经典的01背包问题中,我们面对的是一个有限的背包,每种物品都有一个重量和价值,目标是在不超过背包容量的前提下,选择物品以最大化总...

Global site tag (gtag.js) - Google Analytics