#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int w[1001];
int v[1001];
int x[1001];
int n;
int maxv=0;
int W;
void dfs(int i,int tw,int tv,int a[])
{
if(i>n)
{
if(tv>maxv)
{
maxv=tv;
}
}
else
{
if(tw+w[i]<=W)
{
a[i]=1;
dfs(i+1,tw+w[i],tv+v[i],a);
}
a[i]=0;
dfs(i+1,tw,tv,a);
}
}
int main()
{
int a[1001];
while(1){
maxv=0;
//memset(w,0,sizeof(w));
//memset(v,0,sizeof(v));
scanf("%d %d",&n,&W);
if(!n&&!W)break;
for(int i=1;i<=n;i++)
{
scanf("%d",&w[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
dfs(1,0,0,a);
printf("%d\n",maxv);
}
return 0;
}
0 1 背包
最新推荐文章于 2024-07-25 09:34:23 发布