v我答案
  • 板块灌水区
  • 楼主lyyz20240397
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/29 17:12
  • 上次更新2024/7/29 18:51:10
查看原帖
v我答案
1405214
lyyz20240397楼主2024/7/29 17:12

【题目描述】 一个旅行者有一个最多能装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;}
2024/7/29 17:12
加载中...