1033.采药 0-1背包与完全背包 SDNUOJ1033采药(一维数组)1043采药2(一维数组)

1033(一维数组)(背包容量 j 逆序枚举)0-1背包

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define N 1005
int v[N],w[N];
int m[N];

int main()
{
    int c, n;
    while(cin >> c >> n)
    {
        for(int i = 1; i <= n; i++)
        {
            cin >> w[i] >> v[i];
        }
        memset(m, 0, sizeof(m));
        for(int i = 1; i <= n; i++)
        {
            for(int j = c; j >= w[i]; j--)
            {
                m[j] = max(m[j],m[j-w[i]] + v[i]);
            }
        }
        cout << m[c] << endl;
    }
    return 0;
}

1043(背包容量 j 顺序枚举)完全背包

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define N 1005
int v[N],w[N];
int m[N];

int main()
{
    int c, n;
    while(cin >> c >> n)
    {
        for(int i = 1; i <= n; i++)
        {
            cin >> w[i] >> v[i];
        }
        memset(m, 0, sizeof(m));
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= c; j++)
            {
                if(j >= w[i])
                    m[j] = max(m[j],m[j-w[i]] + v[i]);
                else
                    m[j] = m[j - 1];
            }
        }
        cout << m[c] << endl;
    }
    return 0;
}

全部评论

相关推荐

27届学院本誓死冲击...:自我评价和校园经历全删了,荣誉经历只留奖学金,项目也全得换都不如外卖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务