【题目描述】 一个旅行者有一个最多能装MM公斤的背包,现在有nn件物品,它们的重量分别是W1W1,W2W2,...,WnWn.它们的价值分别为C1C1,C2C2,... ,CnCn,求旅行者能获得最大总价值。
【输入】 第一行:两个整数,MM(背包容量,M≤200M≤200)和NN(物品数量,N≤30N≤30);第22..N+1N+1行:每行二个整数WW,CC,表示每个物品的重量和价值。
【输出】 仅一行,一个数,表示最大总价值。
【输入样例】 10 4 2 1 3 3 4 5 7 9 【输出样例】 12 (01背包)这样做怎么了:``
#include<bits/stdc++.h>
using namespace std;
const int maxm=2001,maxn=31;
int m,n;
int w[maxn],c[maxn];
int f[maxm];
int main(){
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++) scanf("%d%d",&w[i],&c[i]);
for(int i=1;i<=n;i++) {
for(int v=m;v>=w[i];v--) {
if(f[v-w[i]]+c[i]>f[v]) f[v]=f[v-w[i]]+c[i]; } } printf("%d",f[m]); return 0;}