constmaxn=200; [1..maxn,1..maxn]ofbyte;w:array[1..maxn]ofinteger;f:array[1..maxn]ofrecord{F[i].sum为从第i个地窖开始最多可以挖出的地雷数}{F[i].next为向后连接,即应该再向
constmaxn=200; [1..maxn,1..maxn]ofbyte;w:array[1..maxn]ofinteger;f:array[1..maxn]ofrecord{F[i].sum为从第i个地窖开始最多可以挖出的地雷数}{F[i].next为向后连接,即应该再向后挖的地窖的编号}end;i,j,n,k,beginwrite('inputn:');readln(n);write('inputw[i]:');fori:=1tondoread(w[i]);readln;fillchar(a,sizeof(a),0);fillchar(f,sizeof(f),0);writeln('inputx->y(00isover!):');repeatreadln(i,j);if(i<>0)and(j<>0)thena[i,j]:=1;until(i=0)and(j=0);{前面为读入和初始化工作}f[n].sum:=w[n];{从F[n]开始,向前求每一个F[i]}fori:=n-1downto1do{求第i+1到第n个地窖中,与第i个地窖连接的、所挖地雷数最大的地窖K}beginmax:=0;{求MAX{F[j].sum}作为F[i]的后继}k:=0;forj:=i+1tondoif(a[i,j]=1)and(maxf[k].sumthenk:=i;max:=f[k].sum;write('path:',k);k:=f[k].next;{输出路径}whilek<>0dobeginwrite('--',k);k:=f[k].nextend;writeln;writeln('max=',max);readln;end.本人是学C语言的,Pascal不大会,特别是那些函数;请帮帮忙!!!谢谢
展开
全部