HDU2602_Bone Collector_很水的01背包

题目大意: 好吧,典型的01背包。 解题思路: 01背包。 代码:
#include
#define max(x,y) x>y? x:y
const int MAX=1005;
using namespace std;
int main(void)
{
 int cas,n,m,p[MAX],c[MAX],f[MAX];
 cin>>cas;
 while(cas--)
 {
  int i,j,num,tal;
  memset(f,0,sizeof(f));
  cin>>num>>tal;
  for(i=1;i<=num;i++)
   cin>>p[i];
  for(i=1;i<=num;i++)
   cin>>c[i];
  for(i=1;i<=num;i++)
  {
   for(j=tal;j>=0;j--)
   {
    if(j>=c[i])
     f[j]=max(f[j],f[j-c[i]]+p[i]);
   }
  }
  cout<
原文地址:https://www.cnblogs.com/cchun/p/2520187.html