#include<stdio.h>
int main()
{
int rp[103]={0},rmb[103]={0},time[103]={0};
int n,m,r,i,j,f[103][103][103],q,mm[103][103][103]={0},max=0,min=999999;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
for(q=1;q<=r;q++)
f[i][j][q]=2000000;
for(i=1;i<=n;i++)
scanf("%d %d %d",&rmb[i],&rp[i],&time[i]);
scanf("%d %d",&m,&r);
for(i=1;i<=n;i++)
{
if(f[i][rmb[i]][rp[i]]>time[i]||mm[i][rmb[i]][rp[i]]<1)
{
f[i][rmb[i]][rp[i]]=time[i];mm[i][rmb[i]][rp[i]]=1;
f[i+1][rmb[i]][rp[i]]=time[i];mm[i+1][rmb[i]][rp[i]]=1;
}
for(j=rmb[i];j<=m;j++)
for(q=rp[i];q<=r;q++)
if(f[i-1][j-rmb[i]][q-rp[i]]!=0)
{
if(mm[i-1][j-rmb[i]][q-rp[i]]+1>mm[i][j][q]||((f[i-1][j-rmb[i]][q-rp[i]]+time[i]<f[i][j][q])&&(mm[i-1][j-rmb[i]][q-rp[i]]+1==mm[i][j][q])))
{
mm[i][j][q]=mm[i-1][j-rmb[i]][q-rp[i]]+1;
f[i][j][q]=f[i-1][j-rmb[i]][q-rp[i]]+time[i];
mm[i+1][j][q]=mm[i][j][q];
f[i+1][j][q]=f[i][j][q];
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
for(q=1;q<=r;q++)
if(mm[i][j][q]>max)
max=mm[i][j][q];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
for(q=1;q<=r;q++)
if(mm[i][j][q]==max&&f[i][j][q]<min)
min=f[i][j][q];
printf("%d",min);
return 0;
}
只过5个点,帮看看,谢谢了。