现在小A有一个背包,容量为c。现在他面前摆着n个东西,每个东西值一定的钱,但也会占据一定的背包空间。现在他想知道,他的背包最多能够装走值多少钱的物品?
输入:n+1行,第一行两个数,为c,n,代表背包容量和物品数量。接下来n行输入每个东西值的钱和占据的背包空间。
输出;一行,输出一个数m,代表他的背包最多能够装走值m钱的物品。
#include<bits/stdc++.h>
using namespace std;
struct stone{
int huge;
int price;
}a[1000];
int main(){
int ct[1000]={};
int p;
int c,n;//背包容量为c,物品数量为n。
cin>>c>>n;
for(int i=0;i<n;i++){
cin>>a[i].huge>>a[i].price;
}
for(int i=0;i<n;i++){
for(int j=c;j>=a[i].huge;j--){
ct[j]=max(ct[j],ct[j-a[i].huge]+a[i].price);
}
}
cout<<ct[c];
return 0;
}