一个背包问题的变式,厨师做包子,我在一个习题网站提交时总有一些测验数据错误,但是我不知道是我漏掉情况,还是数据错误。下面是我的代码,不过那个网站没什么提示,只是显示错误和正确。
#include<stdio.h>
int max(int x,int y)
{
if(x>y) return x;
return y;
}
int f[20][1007]={0},
d[20]={0},//某种馅料的数量
c[20]={0},//馅料耗材
v[20]={0},//馅料产品售价
n,//面团总重
m;//馅料种类数量
int main(){
int i,j,k,x,y;
scanf("%d %d %d %d",&n,&m,&c[1],&v[1]);
d[1]=n;
#for(i=2;i<=m+1;i++)
{scanf("%d %d %d %d",&x,&y,&c[i],&v[i]);//x为馅料总重 y为每一个包子所要馅料
d[i]=x/y;
}
for(i=1;i<=m+1;i++)
for(j=1;j<=n;j++)
for(k=1;k*c[i]<=j&&k<=d[i];k++)
f[i][j]=max(f[i-1][j],f[i-1][j-k*c[i]]+k*v[i]);
printf("%d",f[m+1][n]);
}