[sjtu oj] 1013 无限背包

如题所述,无限背包问题

代码如下

#include<bits/stdc++.h>

using namespace std;

const int MAXN=1e5+5;
const int MAXM=1e4+5;

int v,n,dp[MAXN];
struct Obj
{
    int w,v;
}obj[MAXM];


int main()
{
    cin>>v>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>obj[i].w>>obj[i].v;
    } 
    for(int i=1;i<=n;i++)
    {
        int temw=obj[i].w,temv=obj[i].v;
        for(int j=temw;j<=v;j++)
        dp[j]=max(dp[j],dp[j-temw]+temv); //关键部分,这里从小到大,就不用考虑到数量问题了
    }
    cout<<dp[v];
    return 0;
}

 

posted @ 2021-03-06 15:46  Adaxy  阅读(36)  评论(0编辑  收藏  举报