`
Lisajoy512
  • 浏览: 9931 次
  • 性别: 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背包问题分析及代码

    01背包问题属于组合优化问题的一个例子,求解01背包问题的过程可以被视作在很多可行解当中求解一个最优解。01背包问题的一般描述如下: 给定n个物品和一个背包,物品i的重量为Wi,其价值为Vi,背包的容量为C。选择...

    贪婪法解决01背包问题

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

    01背包问题的C语言代码

    01背包问题的源代码,C语言编写,绝对可以运行。

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

    01背包问题是一个很经典的问题,在这里我用回溯法解决。希望大家一起来探讨呀!

    01背包问题_01背包问题_

    课程作业,实现算法实践书后的例题,实现01背包问题

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

    主要介绍了Python基于回溯法解决01背包问题,结合实例形式分析了Python回溯法采用深度优先策略搜索解决01背包问题的相关操作技巧,需要的朋友可以参考下

    beiBao01_免疫克隆解决01背包问题_01背包_免疫克隆算法_

    免疫克隆解决01背包问题,将免疫概念及其理论应用于遗传算法,在保留原算法优良特性的前提下,力图有选择、有目的地利用待求问题中的一些特征信息或知识来抑制其优化过程中出现的退化现象,这种算法称为免疫算法...

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

    利用动态规划算法实现了01背包问题,并取得了良好的效果。

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

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

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

    回溯法和动态规划法解01背包问题,控制台应用程序,代码没有编译完成,请自行编译

    c c++ 01背包问题动态规划解决

    01背包问题解决方法不少,动态规划是其中之一,动态规划的问题解题思路都差不多(一些浅见),基本要素是最优子结构性质,子问题重叠性质,自底向上的求解方法。只要了解了基本要素,那么这种题型也会更好理解。本题...

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

    01背包问题的贪心算法,详细解析,令你很快懂的01背包问题中的贪心算法思想

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

    文档详细地解释了动态规划法解决01背包问题,包括算法设计思想、算法改进思想、存储结构、算法实现,是一篇来自计算机读报的文章,适合各位对动态规划存在疑问的同学好好品读。

    01背包问题 回溯法

    C语言实现01背包问题 回溯法 算法分析题答案

    01背包问题测试数据

    0-1背包问题测试数据,内含多组测试数据,物品的价值量及其重量,复制粘贴即可使用

    动态规划解决01背包问题

    动态规划解决01背包问题 动态规划是解决01背包问题的核心思想,其核心是将大问题拆分成小问题,并通过寻找大问题与小问题的递推关系,解决一个个小问题,最后达到解决原问题的效果。动态规划的原理是基于最优性原理...

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

    本代码大量注释,便于理解。回溯法解决01背包问题,相对于动态规划来说,我们首先得了解问题的解空间,了解解空间的组织结构,最后搜索解空间,其中加入约束条件和限界条件是关键,否则就是穷举了。

    01背包问题-四种方法

    01背包问题,四种方法(动态规划、贪心、回溯、分支限界)

    C++编写的01背包问题

    C++编写的01背包问题,用的动态规划的思想,用于学习算法课程,内包含程序解决问题及源代码,可以运行。

    经典遗传算法(SGA)解01背包问题的python代码实现

    经典遗传算法(SGA)解01背包问题的python代码实现,说明如下: 1.采用经典的二进制编码,选择算子为轮盘赌选择,交叉算子为两点交叉,变异算子为反转(单点)变异 2.可调的参数为:gen,pc,pm,popsize,n,w,c,W,M 3.两...

Global site tag (gtag.js) - Google Analytics