1175.开心的金明 01背包

Posted guanwen769aaaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1175.开心的金明 01背包相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

#include<bits/stdc++.h>
using namespace std;
int a[30050],b[30050];
int mp[30050];
int n,i,tmp,m,j;
int main()
{
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        memset(mp,0,sizeof(mp));
        for(i=1;i<=m;i++)
        {
            scanf("%d %d",&a[i],&b[i]);
        }
        //m[i][j] 表示在面对第i件物品,且背包容量为 j时所能获得的最大价值 
//        //时间复杂度O(N * M),空间复杂度也为O(N * M)
//        for(i=1;i<=m;i++)//物品
//        {
//            for(j=0;j<=n;j++)//资源
//            {
//                if(j>=a[i])mp[i][j]=max(mp[i-1][j],mp[i-1][j-a[i]]+a[i]*b[i]);
//                else mp[i][j]=mp[i-1][j];
//            }
//                
//        }
        //空间复杂度也为O(N)
        for(i=1;i<=m;i++)//物品
        {
            for(j=n;j>=0;j--)//钱数
            {//利用滚动数组求背包问题最合适的值
                if(j-a[i]>=0) mp[j]=max(mp[j],mp[j-a[i]]+a[i]*b[i]);
            }
        }
        cout<<mp[n]<<endl;
    }
    return 0;
}

  

---恢复内容结束---

以上是关于1175.开心的金明 01背包的主要内容,如果未能解决你的问题,请参考以下文章

RQNOJ 2 开心的金明

dp--背包--开心的金明

开心的金明---背包动规

luogu P1064|| 01背包||金明的预算

蓝桥杯-开心的金明

06普及组开心的金明程序思路