飞雪天涯 2011-08-04 22:19:00
点我顶贴
收藏
删除
50分:
#include <iostream>
using namespace std;
int main(void){
long n,health[100],gain[100],dp[100];
cin>>n;
for(int i=0;i<n;i++) cin>>health[i];
for(int i=0;i<n;i++) cin>>gain[i];
for (int i=0;i<n;i++)
for (j=100;j>=health[i];j--)
if(dp[j-health[i]]+gain[i]>dp[j]) dp[j]=dp[j-health[i]]+gain[i];
cout<<dp[100];
return 0;
}
30分:
#include <iostream>
using namespace std;
int main(void){
long n,health[100],gain[100],dp[100];
cin>>n;
for(int i=0;i<n;i++) cin>>health[i];
for(int i=0;i<n;i++) cin>>gain[i];
for (int i=0;i<n;i++)
for (j=99;j>=health[i];j--)
if(dp[j-health[i]]+gain[i]>dp[j]) dp[j]=dp[j-health[i]]+gain[i];
cout<<dp[99];
return 0;
}