01背包

来源:互联网 发布:linux 物理内存 编辑:程序博客网 时间:2024/06/05 08:20
#include <stdio.h>void search(int );void cmax();int a[100],w[100],v[100];int c,n,max;int main(){    int i;    while(scanf("%d %d",&n,&c))    {        max=0;        if(n==0&&c==0)            break;        for(i=0;i<n;i++)            scanf("%d",&w[i]);        for(i=0;i<n;i++)            scanf("%d",&v[i]);        search(0);        printf("%d\n",max);    }    return 0;}void search(int m){    if(m>=n)        cmax();    else    {        a[m]=0;        search(m+1);        a[m]=1;        search(m+1);    }}void cmax(){    int i,weight=0,value=0;    for(i=0;i<n;i++)    {        if(a[i]==1)        {            weight=weight+w[i];            value=value+v[i];        }    }    if(weight<=c&&value>max)        max=value;}
0 0
原创粉丝点击