首页 > 试题广场 >

对于物品数量 n=4,承重 W=8 的背包问题,已知要装入背

[单选题]
对于物品数量 n=4,承重 W=8 的背包问题,已知要装入背包的物品分别是
w=2,c=3(重量为2,价值为3)
w=3,c=4
w=4,c=5
w=5,c=6
每个物品最多选一次,请问往背包里最多放入价值为多少的物品
  • 4
  • 6
  • 8
  • 10
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int bag01(vector<int>&weights,vector<int>&values,int capacity){
    int n=weights.size();
    vector<int>dp(capacity+1,0);
    for(int i=0;i<n;++i){
        for(int j=capacity;j>=weights[i];--j){
            dp[j]=max(dp[j],dp[j-weights[i]]+values[i]);
        }
    }
    return dp[capacity];
}
int main(){
    vector<int> weights={2,3,4,5};
    vector<int> values={3,4,5,6};
    int capacity=8;
    int max_value=bag01(weights,values,capacity);
    cout<<"背包能装入的最大价值为:"<<max_value<<endl;
    return 0;
}

发表于 2026-05-16 15:53:37 回复(0)