hdu2602题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602
poj3624题目链接:http://poj.org/problem?id=3624
两个题都是非常非常裸的0-1背包。。
hdu2602代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int t; int f[1005]; int v[1005]; int w[1005]; int main() { scanf("%d",&t); while(t--) { int n,V; scanf("%d%d",&n,&V); for(int i = 1;i <= n;++i) scanf("%d",&w[i]); for(int i = 1;i <= n;++i) scanf("%d",&v[i]); memset(f,0,sizeof f); for(int i = 1;i <= n;++i) for(int j = V;j >= v[i];--j) f[j] = max(f[j],f[j - v[i]] + w[i]); printf("%d\n",f[V]); } return 0; }
poj3624代码
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int f[13000]; int v[4000]; int w[4000]; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { for(int i = 1;i <= n;++i) scanf("%d%d",&v[i],&w[i]); memset(f,0,sizeof f); for(int i = 1;i <= n;++i) for(int j = m;j >= v[i];--j) f[j] = max(f[j],f[j - v[i]] + w[i]); printf("%d\n",f[m]); } return 0; }