ダイナミックプランニングマルチバックパック
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