题目链接: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; }
原文地址:http://blog.csdn.net/u013912596/article/details/37919715