编辑代码

#include<iostream>
using namespace std;
#include<string>
int V[5][10];
int x[5];
int max(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;	
} 
int Value(int w[],int v[],int n,int C)
{
	int i,j;
	for(i=0;i<=n;i++)
		V[i][0]=0;
	for(j=0;j<=C;j++) 
		V[0][j]=0;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=C;j++)
		{
			if(j<w[i-1])
				V[i][j]=V[i-1][j];
			else
				V[i][j]=max(V[i-1][j],V[i-1][j-w[i-1]]+v[i-1]);
		}
	}
	for(i=n,j=C;i>0;i--)
	{
		if(V[i][j]>V[i-1][j])
		{
			x[i-1]=1;
			j=j-w[i-1];
		}
		else
			x[i-1]=0;
	}
	return V[n][C];
}
int main()
{
	int w[5]={2,3,6,5,4};
	int v[5]={2,6,5,4,7};
	cout<<"背包内最大价值是:"<<Value(w,v,5,12)<<endl;
	return 0; 
}