您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页0-1背包【动态规划】

0-1背包【动态规划】

来源:二三四教育网

include <iostream>

using namespace std;

int max(int x, int y){

return x>=y?x:y;

}

int main(){

cout<<"输入背包容量和物品数量"<<endl;

int m, //背包容量 
    n; //物品数量 

cin>>m>>n;

int table[n+1][m+1];//制表 

cout<<"输入物品的价值和重量:"<<endl;

int value[n+1];
int weight[n+1];

for(int i = 1; i<=n; i++) {
    
    cin>>value[i]>>weight[i];
}

for(int k = 0; k<=n; k++)
for(int kk = 0; kk<=m; kk++){
    
    table[k][kk] = 0;
}

for(int currentSelectGood = 1; currentSelectGood <= n; currentSelectGood++)
for(int currentBableCaptable = 1; currentBableCaptable <= m; currentBableCaptable++){
    
    if(currentBableCaptable >= weight[currentSelectGood]){
        
        table[currentSelectGood][currentBableCaptable] = max(table[currentSelectGood-1][currentBableCaptable], table[currentSelectGood-1][currentBableCaptable-weight[currentSelectGood]]+value[currentSelectGood]);
    }else{
        
        table[currentSelectGood][currentBableCaptable] = table[currentSelectGood-1][currentBableCaptable];
    }
}

cout<<"最大值为:"<<endl;

cout<<table[n][m];

}

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务