7.16_B题

题目链接:http://code.bupt.edu.cn/problem/p/417/

裸的01背包,不懂的同学可以看下本博客转载的《背包九讲》

代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define N 11111
using namespace std;
int a[N];
long long b[N];
long long dp[N];
int main()
{
    int c;
    scanf("%d",&c);
    while(c--)
    {
        memset(dp,0,sizeof(dp));
        int t;
        int n;
        scanf("%d%d",&t,&n);
        for(int i=0;i<n;i++)
            scanf("%d%lld",&a[i],&b[i]);
        for(int i=0;i<n;i++)
            for(int j=t;j>=a[i];j--)
            dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
        printf("%lld\n",dp[t]);
    }
    return 0;
}


你可能感兴趣的:(C++,动态规划,ACM)