编辑代码

#include <iostream>
using namespace std;
#define N 99

int Cost(int i);
int Back(int i);
int n, b;
int cv = 0;
int cw = 0;
int B = 0;
int Y[N], V[N], W[N], X[N];
int main()
{
    cout << "input n:";
    cin >> n;
    cout << "input b:";
    cin >> b;
    cout << "input V:";
    for (int a = 1; a <= n; a++)
        cin >> V[a];
    cout << "input W:";
    for (int a = 1; a <= n; a++)
        cin >> W[a];
    int i = 0;
    while (true)
    {
        int C = Cost(i);
        if (C >=B)
        {
            i = i + 1;
            if (cw + W[i] <= b)
            {
                cv = cv + V[i];
                cw = cw + W[i];
                X[i] = 1;
            }
            else
                X[i] = 0;
        }
        else
            i = Back(i);
        if (i == n && cv>=B)
        {
            B = cv;
            for (int a = 1; a <= n; a++)
                Y[a] = X[a];
            i = Back(n);
        }
        if (i == 0)
        {
            cout << "Y:";
            for (int a=1; a <= n; a++)
                cout << Y[a];
            cout << endl;
            cout << "B:" << B;
            return 0;
        }
    }
}
int Cost(int i)
{
    int c = cv;
    for (int j = i + 1; j <= n; j++)
        c = c + V[i];
    return c;
}
int Back(int i)
{
    if (i == 1 && X[i] == 0)
        return 0;
    if (X[i] == 1)
    {
        cv = cv - V[i];
        cw = cw - W[i];
        if (i < n)
        {
            X[i] = 0;
            return i;
        }
        else
            Back(i - 1);
    }
    else
        Back(i - 1);
}