返回顶部

背包问题DFS

#include<cstdio>
const int maxn=30;
int n,V,maxValue=0;
int w[maxn],c[maxn];
void DFS(int index,int sumW,int sumC)
{
    if(index==n)
    {
        if(sumW<=V&&sumC>maxValue)
        {
            maxValue=sumC;
        }
        return;
    }
    DFS(index+1,sumW,sumC);
    DFS(index+1,sumW+w[index],sumC+c[index]);
 }
 int main()
 {
     scanf("%d%d",&n,&V);
     for(int i=0;i<n;i++)
     scanf("%d",&w[i]);
     for(int i=0;i<n;i++)
     scanf("%d",&c[i]);
     DFS(0,0,0);
     printf("%d\n",maxValue);
     return 0;
5 8
3 5 1 2 2
4 5 2 1 3
 }

 

posted @ 2020-08-11 20:15  tianyudizhua  阅读(88)  评论(0编辑  收藏  举报