编辑代码

#include<iostream>
#include<stack>
using namespace std;

int maxValue(int w[], int v[], const unsigned& length, const unsigned& capacity)
{
    stack<int> Bag;//首先构造出一个空的背包
    int max = 0;//不同装入情况中背包中物品最大的价值
    int weight = 0;//当前背包中物品的总重量
    int value = 0;//当前背包中物品的总价值
    int i;

    for (i = 0; ; i++)
    {
        if (weight + w[i] <= capacity)//第一种情况:背包装入该物品后不会超重
        {
            Bag.push(i);//将该物品装入背包中
            weight += w[i];//装入物品后背包重量增加
            value += v[i];//装入物品后背包中物品的价值增加
        } 
    return max;
}

int main(void)
{
    unsigned num, capacity;
    cout << "请输入物品的个数:";
    cin >> num;
    int* weights = new int[num];
    int* values = new int[num];
    cout << "请输入每件物品的重量:";
    for (unsigned i = 0; i < num; i++)
    {
        cin >> weights[i];
    }
    cout << "请输入每件物品的价值:";
    for (unsigned i = 0; i < num; i++)
    {
        cin >> values[i];
    }
    cout << "请输入包的最大承重:";
    cin >> capacity;
    cout << "该问题的最优解为:" << maxValue(weights, values, num, capacity);
    return 0;
}