您的位置:首页 > 其它

HDU 2602 01背包

2012-07-24 23:10 302 查看
背包问题建议去看《背包九讲》

01背包最简单最基础的背包 对于一个物品 只有选和不选两种选择,因此很容易得出转移方程



#include<stdio.h>
#include<string.h>
int dp[1100];
struct node
{
   int value;
   int volume;
}a[1100];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
      int n,v;
      memset(dp,0,sizeof(dp));
      scanf("%d%d",&n,&v);
      int i,j;
      for(i=1;i<=n;i++)
      scanf("%d",&a[i].value);
      for(i=1;i<=n;i++)
      scanf("%d",&a[i].volume);
      for(i=1;i<=n;i++)
      {
      for(j=v;j>=a[i].volume;j--)
      {
         if(dp[j]<dp[j-a[i].volume]+a[i].value)
         dp[j]=dp[j-a[i].volume]+a[i].value;
         else
         dp[j]=dp[j];
      }
      }
      printf("%d\n",dp[v]);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: