c语言 背包问题dfs方法

来源:互联网 发布:hadoop mac和linux 编辑:程序博客网 时间:2024/05/17 07:00
#include<stdio.h>  #define N 30  int w[N], value[N], n, maxvalue = 0, V;  void dfs(int index, int sumw, int sumv)  {      if(index > n)      {          if(sumw <= V && sumv > maxvalue)          {              maxvalue = sumv;          }          return;      }      dfs(index + 1,sumw + w[index],sumv + value[index]);//选       dfs(index + 1,sumw, sumv);//不选   }  int main()  {      scanf("%d %d",&n, &V);    for(int i=1; i<=n; ++i)      {          scanf("%d", &w[i]);    }      for(int i=1; i<=n; ++i)      {          scanf("%d", &value[i]);      }      dfs(1, 0, 0);      printf("%d\n", maxvalue);    return 0;  }
0 0
原创粉丝点击