zoukankan      html  css  js  c++  java
  • 0-1背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2602

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #define maxn 1005
     5 using namespace std;
     6 int n,v;
     7 int f[maxn][maxn];
     8 int c[maxn],w[maxn];
     9 int main()
    10 {
    11     //freopen("in.txt","r",stdin);
    12     int t;
    13     scanf("%d",&t);
    14     while(t--)
    15     {
    16         scanf("%d%d",&n,&v);
    17         for(int i=1;i<=n;i++)
    18             scanf("%d",&w[i]);
    19         for(int i=1;i<=n;i++)
    20             scanf("%d",&c[i]);
    21         memset(f,0,sizeof(f));
    22         for(int i=n;i>=1;i--)
    23             for(int j=0;j<=v;j++)
    24             {
    25                 if(i==n)
    26                     f[i][j]=0;
    27                 else
    28                     f[i][j]=f[i+1][j];
    29                 if(j>=c[i])
    30                 f[i][j]=max(f[i][j],f[i+1][j-c[i]]+w[i]);
    31             }
    32         int ans=0;
    33         for(int i=1;i<=n;i++)
    34             ans=max(ans,f[i][v]);
    35         printf("%d
    ",ans);
    36     }
    37     return 0;
    38 }
    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #define maxn 10005
     5 using namespace std;
     6 int n,v;
     7 int f[maxn];
     8 int c[maxn],w[maxn];
     9 int main()
    10 {
    11     //freopen("in.txt","r",stdin);
    12     int t;
    13     scanf("%d",&t);
    14     while(t--)
    15     {
    16         scanf("%d%d",&n,&v);
    17         for(int i=1;i<=n;i++)
    18             scanf("%d",&w[i]);
    19         for(int i=1;i<=n;i++)
    20             scanf("%d",&c[i]);
    21         memset(f,0,sizeof(f));
    22         for(int i=1;i<=n;i++)
    23             for(int j=v;j>=c[i];j--)
    24             f[j]=max(f[j],f[j-c[i]]+w[i]);
    25         printf("%d
    ",f[v]);
    26     }
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    [LeetCode] 617. Merge Two Binary Trees
    [LeetCode] 738. Monotone Increasing Digits
    289. Game of Life
    305. Number of Islands II
    288. Unique Word Abbreviation
    271. Encode and Decode Strings
    393. UTF-8 Validation
    317. Shortest Distance from All Buildings
    286. Walls and Gates
    296. Best Meeting Point
  • 原文地址:https://www.cnblogs.com/lyf123456/p/3727528.html
Copyright © 2011-2022 走看看