讨论 / 哪位大牛帮看看我的“找啊找啊找GF”的程序啊
qq271989883 2011-10-07 08:40:00
点我顶贴 收藏 删除
程序如下:

#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个点,帮看看,谢谢了。

#1 science@2011-10-07 08:40:00
回复 删除
我觉得你可以反算,就是用一个大数减去time值存下来,背包求最大,然后再用大数的若干倍减去结果再模一下
查看更多回复
提交回复