- 01背包(package)
多重背包输出方案数
- 2023-4-19 16:46:30 @
#include<bits/stdc++.h>
using namespace std;
struct note{
int v,w,s;
bool flag;
}a[10001];
int f[10001];
int n,m;
int path[7001][7001];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&a[i].v,&a[i].w,&a[i].s);
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=0;j--)
{
for(int k=0;k<=a[i].s;k++)
{
if(j<k*a[i].v)
{
break;
}
else
{
if(f[j]<f[j-k*a[i].v]+k*a[i].w)
{
f[j]=f[j-k*a[i].v]+k*a[i].w;
path[i][j]=k;
for(int h=1;h<i;h++) path[h][j]=path[h][j-k*a[i].v];
}
}
}
}
}
cout<<f[m]<<endl;
for(int i=1;i<=n;i++)
{
cout<<path[i][m]<<endl;
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 462
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 114
- 已通过
- 31
- 上传者