• 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;
    }
  • 相关阅读:
    Cousera课程Learning How to Learn学习报告
    C语言中当无符号数遇到符号数
    STC15 串口(工作方式1)使用小结
    取C语言头文件的文件名
    linux 的 shell 逻辑
    Win7 局域网内简单共享的设置
    写了一个批处理,可以实现文件备份,自动对比删除冗余文件。
    C语言 函数指针的应用
    自动控制原理 典型环节频率特性对比
    51单片机汇编的溢出标志位OV和进位标志位CY
  • 原文地址:https://www.cnblogs.com/Chri-K/p/13640290.html
Copyright © 2020-2023  润新知