你已经忍耐太久了。现在是时候把你对大家的看法说出来了。
假设你对n个人说出自己的看法,在和第i个人说完后,你的健康指数将减少lostHealth[i],而你的快乐指数将增加gainJoy[i]。你可以和每一个人最多说一次,并且你不必按照特定顺序进行。
你的目标是得到尽可能多的快乐。最初的时候,你的健康指数为100,而快乐指数为0。如果你的健康指数为0或负数,即使你得到再多快乐,你也只会痛苦地死去。
现在编写程序请你计算出你可以得到的最大快乐指数。
INPUT:
输入共3行。
第1行,1个正整数n,表示有n个人。(1<=n<=20)
第2行,n个整数,第i个整数表示你对第i个人说话会失去的健康指数lostHealth[i]。(0<=lostHealth[i]<=100)
第3行,n个整数,第i个整数表示你对第i个人说话会得到的快乐指数gainJoy[i]。(0<= gainJoy[i]<=100)
OUTPUT:
输出共1行,1个整数,表示你可以得到的最大快乐指数。
INPUT:
3
1 21 79
20 30 25
OUTPUT:
50
【参考程序】:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n,i,j;
int lh[30],ha[30],sum[110];
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&lh[i]);
for (i=1;i<=n;i++) scanf("%d",&ha[i]);
memset(sum,0,sizeof(sum));
for (i=1;i<=n;i++)
for (j=100;j>=lh[i];j--)
if (j-lh[i]>0)
if (sum[j-lh[i]]+ha[i]>sum[j])
sum[j]=sum[j-lh[i]]+ha[i];
printf("%d\n",sum[100]);
system("pause");
return 0;
}