zoukankan      html  css  js  c++  java
  • 01背包

    基本概念

        01背包是背包问题中最简单的问题。01背包的约束条件是给定几种物品,每种物品有且只有一个,并且有权值和体积两个属性。在01背包问题中,因为每种物品只有一个,对于每个物品只需要考虑选与不选两种情况。如果不选择将其放入背包中,则不需要处理。如果选择将其放入背包中,由于不清楚之前放入的物品占据了多大的空间,需要枚举将这个物品放入背包后可能占据背包空间的所有情况。
    状态转移方程
    1 f[i, j] = max( f[ i-1 ][  j-W[ i ] ] + P[ i ] , f[ i-1 ][ j ] )//j >= W[ i ]

    已经AC的HDU2602

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <string>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 int v[1005],w[1005];
     9 int dp[1005][1005];
    10 int max(int x,int y)
    11 {
    12     return x>y?x:y;
    13 }
    14 int main()
    15 {
    16     int t,n,V,i,j;
    17     scanf("%d",&t);
    18     while(t--)
    19     {
    20         scanf("%d%d",&n,&V);
    21         for(i=1;i<=n;i++)
    22             scanf("%d",&w[i]);
    23         for(i=1;i<=n;i++)
    24             scanf("%d",&v[i]);
    25         memset(dp,0,sizeof(dp));
    26         for(i=1;i<=n;i++)
    27             for(j=0;j<=V;j++)
    28         {
    29             if(v[i]<=j)
    30                 dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);
    31             else
    32                 dp[i][j]=dp[i-1][j];
    33         }
    34         cout << dp[n][V] << endl;
    35     }
    36 
    37     return 0;
    38 }

     

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int t;cin>>t;
     6     while(t--)
     7     {
     8         int n,va,w[10005]={0},v[10005]={0},f[10005]={0};
     9         cin>>n>>va;
    10         for(int i=0;i<n;i++) cin>>w[i];
    11         for(int i=0;i<n;i++) cin>>v[i];
    12         for(int i=0;i<n;i++)
    13         for(int j=va;j>=v[i];j--)
    14         f[j]=max(f[j],f[j-v[i]]+w[i]);
    15         cout<<f[va]<<endl;
    16     }
    17     return 0;
    18 }

  • 相关阅读:
    抽奖概率算法
    thinkphp 6.0 结合 layuiadmin (iframe版)
    d2-admin 学习记录
    判断点是否在多边形区域内外
    PHP 优秀资源汇集
    前端学习路线
    限制sa 登录IP
    vs2013发布.net程序
    游标批 量删除数据表
    sql server2012 还原数据库
  • 原文地址:https://www.cnblogs.com/--lr/p/6780900.html
Copyright © 2011-2022 走看看