zoukankan      html  css  js  c++  java
  • P1097-P1099

    //01背包
    #include<iostream>
    using namespace std;
    int main()
    {
        int v,n;
        cin>>v>>n;
        int w,c;
        int dp[1010];
        for(int i=1;i<=n;i++)
        {
            cin>>w>>c;
            for(int j=v;j>=w;j--)
            {
                dp[j]=max(dp[j],dp[j-w]+c);
            }
        }
        cout<<dp[v]<<endl;
        return 0;
    }
     
     
     
    //超内存。。。完全背包
    // #include<iostream>
    // using namespace std;
    // int main()
    // {
    //     long long v,n;
    //     cin>>v>>n;
    //     long long w;
    //     long long dp[100010];
    //     dp[0]={1};
    //     for(long long i=1;i<=v;i++)
    //     {
    //         cin>>w;
    //         for(long long j=w;j<=n;j++)
    //         {
    //                 dp[j]=dp[j]+dp[j-w];
    //         }
    //     }
    //     if(n==0&&v==0)
    //     {
    //         cout<<0;
    //     }
    //     else
    //     {
    //         cout<<dp[n]<<endl;
    //     }
    //     return 0;
    // }
    //正解
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <utility>
    using namespace std;
    int m,n,we[40],jz[40],dp[300],maxn;
    int main()
    {
    scanf("%d%d",&m,&n);
    for (int i = 1;i <= n;i++)
    scanf("%d%d",&we[i],&jz[i]);
    for (int i = 1;i <= n;i++)
    for (int j = we[i];j <= m;j++)
    dp[j] = max(dp[j],dp[j - we[i]] + jz[i]);
    for (int i = 1;i <= m;i++)
    maxn = max(maxn,dp[i]);
    printf("max=%d",maxn);
    return 0;
    }
     
     
    //完全背包,又超内存。。。
    //正解
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <cstring>
    #include <stack>
    #include <queue>
    using namespace std;
    int v,n,sz[30];
    long long dp[11000];
    void swork()
    {
    for (int i = 1;i <= v;i++)
    {
    for (int j = 1;j <= n;j++)
    {
    if (j - sz[i] >= 0)dp[j] = dp[j - sz[i]] + dp[j];
    }
    }
    }
    int main()
    {
    scanf("%d%d",&v,&n);
    for (int i = 1;i <= v;i++)
    scanf("%d",&sz[i]);
    dp[0] = 1;
    swork();
    printf("%lld ",dp[n]);
    return 0;
    }
  • 相关阅读:
    使用Stream流递归 组合树形结构
    MySQL 8 通用表表达式
    sa-token 权限认证
    先更新缓存还是先更新数据库?
    钉钉 回调事件 消息加解密
    commons-io
    stream和parallelstream的区别
    消除if...else
    springboot 扩展xml请求和响应
    springboot admin 邮箱
  • 原文地址:https://www.cnblogs.com/Chri-K/p/13640290.html
Copyright © 2011-2022 走看看