21-找快乐(背包)
Posted ystraw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了21-找快乐(背包)相关的知识,希望对你有一定的参考价值。
/*题目内容:
没有买到奥运会的门票让YF伤心不已,为了使自己开心起来,他去找周围的人聊天,每找一个人聊天,他就会耗费一定的体力,但他会得到一定量的快乐。YF试图使自己尽可能的高兴,但一旦体力耗尽了(为零或为负),他也就挂了,就一点快乐都没有了。现在Yk初始有100点体力,他最多可以获得多少快乐?
输入描述
数据分多组,对于每组数据:第一行为n,表示有YK的n(0<n<21)个朋友。第二行表示和每个人聊天耗费的体力,第三行表示每个人所能提供的快乐值。输入以一个0结束。
输出描述
对于每组输出,输出一个值,YK可以获得的最大的快乐值。
输入样例
3
1 21 79
20 30 25
4
100 100 100 100
1 2 3 4
0
输出样例
50
0
*/
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int s = 99.999, f[100], w[100], v[100];
int n;
while(cin >> n){
if(n == 0)
return 1;
memset(f, 0, sizeof(f));
memset(w, 0, sizeof(w));
memset(v, 0, sizeof(v));
for(int i = 0; i < n; i++)
cin >> w[i];
for(int i = 0; i < n; i++)
cin >> v[i];
for(int i = 0; i < n; i++){
for(int j = s; j > w[i]; j--)
f[j] = max(f[j - w[i]] + v[i], f[j]);
}
cout << f[s] << endl;
}
return 0;
}
以上是关于21-找快乐(背包)的主要内容,如果未能解决你的问题,请参考以下文章