标签:数组 panel nes problem mod source als logs auth
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …
The bone collector had a big bag with a volume of V ,and along his trip of collecting there are a lot of bones , obviously , different bone has different value and different volume, now given the each bone’s value along his trip , can you calculate out the maximum of the total value the bone collector can get ?
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; long long max(long long num1,long long num2)//比较函数 { return num1>num2?num1:num2; } long long dp[1005];//定义背包数组 int main() { int N; int i,j,k; int bone[1005];//定义价值 int volume[1005];//定义容量 int t; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp));//初始化 int count,weight; scanf("%d%d",&count,&weight);//输入组数和总重量 for(j=1;j<=count;j++) scanf("%d",&bone[j]); for(j=1;j<=count;j++) scanf("%d",&volume[j]); for(i=1;i<=count;i++) { for(k=weight;k>=0;k--) { if(k-volume[i]<0)//装不下 { break; } else dp[k]=max(dp[k-volume[i]]+bone[i],dp[k]); cout << dp[k] << endl; } } printf("%lld\n",dp[weight]); } return 0; }
标签:数组 panel nes problem mod source als logs auth
原文地址:http://www.cnblogs.com/gcter/p/7459420.html