码迷,mamicode.com
首页 > 其他好文 > 详细

背包问题(取最大价值)

时间:2020-04-06 13:56:15      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:clu   ios   stream   lang   turn   lan   string   end   背包问题   


#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;

/**
 *   重w  价v
 *    2    3
 *    3    4
 *    4    5
 *    5    8
 *    9    10
 * 
 * 背包容量 20
 * 
 */
#define N 6
#define W 21
 
int B[N][W]={0};
int w[6]={0,2,3,4,5,9};
int v[6]={0,3,4,5,8,10};

void knapsack()
{
    for(int k=1;k<N;k++)  //第几件
    {
        for(int c=1;c<W;c++)   // c 容量
        {
            if(w[k]>c) 
            {
                B[k][c]=B[k-1][c];
            }
            else
            {
                int v1=B[k-1][c-w[k]]+v[k];
                int v2=B[k-1][c];
                if(v1>v2) {
                    B[k][c]=v1;
                }
                else
                {
                    B[k][c]=v2;
                }
            }
        }
    }
}



int main()
{ 
    knapsack();
    cout<<B[5][20]<<endl;
    return 0;
}
 

背包问题(取最大价值)

标签:clu   ios   stream   lang   turn   lan   string   end   背包问题   

原文地址:https://www.cnblogs.com/lkfsblogs/p/12641599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!