背包问题-Bone Collector

来源:互联网 发布:电脑看电影软件 编辑:程序博客网 时间:2024/05/29 12:21
这道题是典型的简单背包问题,其他就不必多说。代码很简单。
#include<iostream>#include<string>#include<algorithm>              //调用max函数。 using namespace std;int f[1005];int Wi[1005],Di[1005];int main()  {          int n,m,i,v,t;    cin>>t;    while(t--)    {     cin>>n>>m;     for(i=0;i<n;i++)       cin>>Di[i];     for(i=0;i<n;i++)       cin>>Wi[i];     memset(f,0,sizeof(f));     for(i=0;i<n;i++)                      //从n个物品里选       for( v=m;v>=Wi[i];v--)               //倒序,每次后一个状态,是由前一个推出来的 。        f[v]=max(f[v-Wi[i]]+Di[i],f[v]);        cout<<f[m]<<endl;     }    return 0;}              



原创粉丝点击