题目描述
有个背包可承受重量N,现有T件物品
每件物品重量为Wi,价值为Vi ,每件物品只有一个,
这个背包可以装载物品的最大价值是多少?
输入
从文件 beibao1.in
中读入数据。
一行两个正整数N T,之间用空格隔开
后面T行,每行两个正整数,分别表示重量Wi,价值Vi
输出
输出到文件 beibao1.out
中。
这个背包可以装载物品的最大价值
样例输入
100 5 77 92 22 22 29 87 50 46 99 90
样例输出
133
数据范围限制
1<=N<=1000
1<=T<=100
话不多说,上代码:
#include <bits/stdc++.h>
using namespace std;
int w[10005],c[10005],f[10005];
int main()
{
int m,n;
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>w[i]>>c[i];
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=w[i];j--)
{
if((f[j-w[i]]+c[i])>f[j]) f[j]=f[j-w[i]]+c[i];
}
}
cout<<f[m];
return 0;
}