• 01背包-入门二题(poj3624 hdu2602)


    二维数组 hdu2602

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    const int maxn=4000;
    
    int dp[13000];
    int d;
    int w;
    int n,wl;
    
    int main(){
        memset(dp,0,sizeof(dp));
        cin>>n>>wl;
        for(int i=1;i<=n;i++){//前i种物品 
        cin>>w>>d;
            for(int j=wl;j>=1;j--){//容量为j 
                if(j>=w) dp[j]=max(dp[j],dp[j-w]+d); 
            }
        }
        cout<<dp[wl]<<endl;
        return 0;
    }
    View Code

    一维数组

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    const int maxn=4000;
    
    int dp[13000];
    int d[maxn];
    int w[maxn];
    int n,wl,t;
    
    int main(){
    
        cin>>t;
        while(t--){
        memset(dp,0,sizeof(dp));
        cin>>n>>wl;
        for(int i=1;i<=n;i++)
        cin>>d[i];
        for(int i=1;i<=n;i++)
        cin>>w[i];
        
        for(int i=1;i<=n;i++){//前i种物品 
            for(int j=wl;j>=0;j--){//容量为j 
                if(j>=w[i]) dp[j]=max(dp[j],dp[j-w[i]]+d[i]); 
            }
        }
        cout<<dp[wl]<<endl;
        }
        return 0;
    }
    View Code

    一维数组 poj3624

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    const int maxn=4000;
    
    int dp[13000];
    int d;
    int w;
    int n,wl;
    
    int main(){
        memset(dp,0,sizeof(dp));
        cin>>n>>wl;
        for(int i=1;i<=n;i++){//前i种物品 
        cin>>w>>d;
            for(int j=wl;j>=1;j--){//容量为j 
                if(j>=w) dp[j]=max(dp[j],dp[j-w]+d); 
            }
        }
        cout<<dp[wl]<<endl;
        return 0;
    }
    View Code
    柳暗花明又一村
  • 相关阅读:
    c# 泛型委托
    c# 用户自定义转换
    c# 溢出上下文检测
    c# 接口相同方法申明使用
    c# 事件的订阅发布Demo
    c# 匿名方法几种表现形式
    c# 数组协变
    c# 交错数组
    C# 位运算详解
    ABAP 7.4 新语法-内嵌生命和内表操作(转)
  • 原文地址:https://www.cnblogs.com/ucandoit/p/8796796.html
Copyright © 2020-2023  润新知