完全背包

来源:互联网 发布:方形补偿器计算软件 编辑:程序博客网 时间:2024/06/05 15:06

hdu1963完全背包

因为是完全背包,所以从cost[i]开始往M走,而01背包则刚好相反


#include<iostream>#include<string.h>using namespace std;int main(){  int M,i,j,t,money,year,d;  int bag[100010],cost[11],earn[11];  cin>>t;  while(t--)  {    cin>>money>>year>>d;    for(i=1;i<=d;i++)    {      cin>>cost[i]>>earn[i];      cost[i]=cost[i]/1000;    }    memset(bag,0,sizeof(bag));    while(year--)    {      M=money/1000;      for(i=1;i<=d;i++)      {        for(j=cost[i];j<=M;j++)          if(bag[j]<bag[j-cost[i]]+earn[i])          bag[j]=bag[j-cost[i]]+earn[i];      }      money+=bag[M];    }    cout<<money<<endl;  }}

0 0
原创粉丝点击