苹果
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。
-
输入
- 有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。 输出
- 对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。 样例输入
-
3 3 1 1 2 1 3 1 0 0
样例输出
-
2
来源
#include<iostream>
#include<string.h>
using namespace std;
int m[1000],v[1000],w[1000];
int main()
{
int a,b;
int i ,j;
while( cin>>a>>b&&a+b)
{
memset(m,0,sizeof(m));
for(i=1;i<=a;++i)
cin>>w[i]>>v[i];
for(i=1;i<=a;++i)
for(j=b;j>=w[i];--j)
{
if(j>=w[i])
{
if(m[j-w[i]]+v[i]>m[j])
m[j]=v[i]+m[j-w[i]];
}
}
cout<<m[b]<<endl;
}
return 0;
}
576726 | 向往蓝天的鱼 | 苹果 | Accepted | 244 | 244 | C/C++ | 10-06 09:58:33 |
576114 | 向往蓝天的鱼 | 苹果 | Accepted | 368 | 4144 | C/C++ | 10-05 15:01:13 |