编辑代码

#include<iostream>
#include<math.h>

using namespace std;

int inOut[4];
int value;
int bagVolume = 9;

bool bagConstraint(int m, int weight[]) {
	int allweight = 0;
	for (int i = 0; i <= m; ++i)
	{
		allweight += inOut[i] * weight[i];
	}

	return allweight <= bagVolume;
}


void bagProblem(int m, int weight[], int valueAll[]) {

	if (m == 4)
	{
		int sum = 0;
		for (int i = 0; i < m; ++i)
		{
			sum += valueAll[i] * inOut[i];
		}

		if (sum > value)
		{
			value = sum;
		}
	}
	else {
		for (int i = 0; i < 2; ++i)
		{
			inOut[m] = i;
			if (bagConstraint(m, weight))
			{
				bagProblem(m + 1, weight, valueAll);
			}
		}

	}

}

int main(int argc, char const* argv[])
{
	cout << "输入的样例:物品数量:4" << endl;
	cout << "背包容量:9" << endl;
	cout << "重量分别是:2 3 4 5" << endl;
	cout << "价值分别是:3 4 5 6 " << endl;
	int num = 4;
	int weight[4] = { 2,3,4,5 };
	int valueAll[4] = { 3,4,5,6 };
	bagProblem(0, weight, valueAll);
	cout << "最终的结果是:" << value << endl;
	cout << endl;
	return 0;

}