讨论 / 【一类限制物品数量的背包】
Paul_Guderian 2016-10-14 02:50:40
点我顶贴 收藏 删除
#include<stdio.h>

#include<algorithm>

#define go(i,a,b) for(int i=a;i<=b;i++)

#define ro(i,a,b) for(int i=a;i>=b;i--)

using namespace std;

int n,m,t,f[1005][1005],w,v,ans=0;

int main()

{

scanf("%d%d%d",&n,&m,&t);

go(k,1,n)

{

scanf("%d%d",&v,&w);

ro(i,m,1)

if(k>=i)

{ro(j,t,v)

{if(f[i-1][j-v]||(i==1&&j==v))

f[i][j]=max(f[i][j],f[i-1][j-v]+w);}

go(i,1,t)ans=max(ans,f[m][i]);}

}

printf("%d",ans);

return 0;

}//【一类限制物品数量的背包】

查看更多回复
提交回复