01背包问题

作者在 2010-12-26 21:40:36 发布以下内容
#include<stdio.h>
void readdata();
void printresult();
void search(int);
void checkmax();
int w[10],v[10];
int c=35,n=10;
int a[10],max=0;
void main()
{
    readdata();
    search(0);
    printresult();
}

void readdata()
{
    int i;
    for(i=0;i<10;i++)
    scanf("%d%d",&w[i],&v[i]);
}

void printresult()
{
    printf("%d\n",max);
}

void checkmax()
{
    int weight=0,val=0,i;
    for(i=0;i<10;i++)
    if(a[i]==1)
    {
        weight+=w[i];
        val+=v[i];
    }
    if(weight<=c)
    if(val>max)
    max=val;
}

void search(int m)
{
    if(m>=10)
    checkmax();
    else
    {
        a[m]=1;
        search(m+1);
        a[m]=0;
        search(m+1);
    }
}

    
程序 | 阅读 826 次
文章评论,共0条
游客请输入验证码
浏览29762次