滚动数组

滚动数组

滚动数组_第1张图片

 

code:

#include <iostream>
using namespace std;
 int shu[1000005];
int main(int argc, char *argv[])
{
 int t;
 scanf("%d",&t);
 while(t--)
 {
  int m;
  scanf("%d",&m);
  int a,b,c,d;
  scanf("%d%d%d%d",&a,&b,&c,&d);
 
  memset(shu,0,sizeof(shu));
  int i;
  for(i=a;i<=m;i++)
  {
   if(shu[i]<shu[i-a]+b)
   {
    shu[i]=shu[i-a]+b; //当前i的钱能够买的最多的物品 
   }
  }
  for(i=c;i<=m;i++)
  {
   if(shu[i]<shu[i-c]+d)
   {
    shu[i]=shu[i-c]+d; //前一个状态i-c钱的购物和i钱的购物取最大值 
   }
  }
  int maxx=-1;
  for(i=0;i<=m;i++)
  {
   if(maxx<shu[i])
   {
    maxx=shu[i];
   }
  }
  cout<<maxx<<endl;
 }
 return 0;
}

 

你可能感兴趣的:(滚动数组)