背包问题,动态规划

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TH_NUM/article/details/88812751

将下面四个重量的物品1,2,2,3 价值分别是9,3,3,6 装进 重量为4的背包中,使得背包的重量不超过4,并且价值最大。

#include<iostream>
#include<cstring>
#include<map>
#include <vector>
#include <set>
#include <algorithm>
#include<limits.h>

using namespace std;
bool camp(vector<int>&a,vector<int>&b){

    return a[1]<= b[1]? (a[1]==b[1]? a[0]<b[0]:true) : false;
}
int main(){

    vector<int> weights={0,1,2,2,3};
    vector<int> value={0,9,3,3,6};
    vector<vector<int>> v(5,vector<int>(5,0));
    int n=4;
    int m=4;
    for(int i=1;i<=n;i++){

        for(int j=1;j<=m;j++){

            if(weights[i]>j){
                v[i][j]=v[i-1][j];
            }else{

                int v1=v[i-1][j];

                int v2=v[i-1][j-weights[i]]+value[i];

                v[i][j]=max(v1,v2);


            }


        }

    }


    cout<<v[4][4]<<endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/TH_NUM/article/details/88812751