ダイナミックプランニングマルチバックパック

487 ワード

ダイナミックプランニングマルチバックパック
#include 
using namespace std;
int n=3;
int w[]={3,4,2};
int v[]={4,5,3};
int W=7;
//f     
//s     
//k     
int f(int s,int k)
{
	if(s<=0||k>n)
		return 0;
	else if(s>=w[k])
	{
		int xk=1;
		int max0=-1;
		int max1=-1;
		for(xk=0;s>=xk*w[k-1];xk++)
		{
			max1=max(f(s,k+1),f(s-xk*w[k-1],k+1)+xk*v[k-1]);
			if(max0