【动态规划】完全背包问题

问题 G: 【动态规划】完全背包问题

时间限制: 1 Sec  内存限制: 64 MB
提交: 12  解决: 10
[提交][状态][讨论版]

题目描述

话说张琪曼和李旭琳又发现了一处魔法石矿(运气怎么这么好?各种嫉妒羡慕恨啊),她们有一个最多能装m公斤的背包,现在有n种魔法石,每种的重量分别是W1,W2,…,Wn,每种的价值分别为C1,C2,…,Cn。若每种魔法石的个数足够多,求她们能获得的最大总价值。

输入

第一行为两个整数,即m,n。

以后每行为两个整数,表示每块魔法石的重量和价值。

输出

获得的最大总价值。

样例输入

5 5
1 1
2 2
3 3
4 4
5 5

样例输出

#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
int t[1005]={0};
int p[1005]={0};
int a[1005]={0};
 
void completepack(int T,int t,int p){
    for(int i=t;i<=T;i++){
        a[i]=max(a[i],a[i-t]+p);
    }
}
 
int main()
{
    int T,M;
    while(scanf("%d %d",&T,&M)!=EOF){
        memset(a,0,sizeof(a));
        for(int i=0;i<M;i++){
           scanf("%d %d",&t[i],&p[i]);
        }
        for(int i=0;i<M;i++){
            completepack(T,t[i],p[i]);
        }
        printf("%d
",a[T]);
    }
    return 0;
}
 
/**************************************************************
    Problem: 2277
    User: zz13
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:1708 kb
****************************************************************/
5



原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5775530.html