美文网首页
动态规划0_1背包问题

动态规划0_1背包问题

作者: tmax | 来源:发表于2018-11-29 19:05 被阅读0次

#include <iostream>
#include <vector>

using namespace std;

void dynamic_0_1(int* v, int* w, int weight, vector< vector<int> >& c, vector<int>& s){

    for(int i=1;i<s.size();i++){
        for(int j=1;j<=weight;j++)
            cout<<c[i][j]<<" ";
        cout<<"\n";
    }

    for(int i=1; i<s.size(); i++){
        cout<<s[i]<<" ";
    }
    cout<<endl;

    for(int i=1; i<s.size(); i++){
        for(int cw=1; cw<=weight; cw++){
            if(w[i]<=cw){
                //c[i][cw] = c[i-1][cw-w[i]] + v[i] > c[i-1][cw] ? c[i-1][cw-w[i]] + v[i] : c[i-1][w];
                if(c[i-1][cw-w[i]] + v[i] > c[i-1][cw]){
                    c[i][cw] = c[i-1][cw-w[i]] + v[i] ;
                    s[i]=1;
                    if(c[i-1][cw-w[i]] == 0)
                        s[i-1]=0;
                }
                else{
                    c[i][cw] = c[i-1][cw];
                    s[i]=0;
                }
            }
            else{
                c[i][cw] = c[i-1][cw];
                s[i]=0;
            }
        }
    }
}

int main()
{
    int n = 3;//物品数量
    int v[3+1] = { 0, 60, 100, 120 };
    int w[3+1] = { 0, 10, 20, 30 };
    int weight = 50;
    vector< vector<int> > c(n+1,vector<int>(weight+1,0));



    vector<int> s(n+1,0);
    dynamic_0_1(&v[0],&w[0],weight,c,s);

    for(int i=1;i<s.size();i++){
        for(int j=1;j<=weight;j++)
            cout<<c[i][j]<<" ";
        cout<<"\n";
    }

    for(int i=1; i<s.size(); i++){
        cout<<s[i]<<" ";
    }

    return 0;
}

相关文章

  • 动态规划0_1背包问题

  • 算法学习收藏

    动态规划问题 动态规划(最优子结构和重叠子问题的比较) 动态规划解决01背包问题 01背包问题 最优二叉查找树 《...

  • 初识动态规划

    0-1 背包问题 备忘录 动态规划-二维数组 动态规划-一维数组 0-1 背包问题升级版 回溯算法 动态规划-二维...

  • 2019-07-10 数据结构和算法(妙味杜鹏)

    八皇后 A *寻路 背包问题(动态规划方法) 背包问题(贪心算法)

  • 动态规划

    0-1背包问题 自己实现的0-1背包问题的动态规划解法,先贴上吧,动态规划原理解释有空再写。

  • 2022-02-19 动态规划高频题专题【1】

    动态规划基本类型 dp基础 背包问题 打家劫舍 股票问题 子序列问题 进阶动态规划 深入理解动态规划过程 定义dp...

  • 动态规划.背包问题

    动态规划 之 0-1背包问题 【背包问题】 现有n个物品,价值为`$$v_1,v_2....v_n$$ 重量为 现...

  • 动态规划 背包问题

    1.问题描述 有n个物体有重量和价值两个属性,一个能承重一定重量的背包。问怎么选择物体能实现背包里的价值最大化。 ...

  • 动态规划 背包问题

    本篇博文参考此博文,该博文PPT非常有助理解 问题描述:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背...

  • 背包问题(动态规划)

    原理参见 屈婉玲老师 算法设计与分析 ORZ

网友评论

      本文标题:动态规划0_1背包问题

      本文链接:https://www.haomeiwen.com/subject/vcprfqtx.html