迷宫问题

program migong;
var
    map:array[0..100,0..100]of longint;
    step,s:array[1..100,1..2]of longint;
    i,maxd,j:longint;

function check(x,y:longint):boolean;
begin
      if (x>=0)and(x<=4)and(y>=0)and(y<=4) then
       begin
         if map[x,y]=0 then exit(true) else exit(false);
       end;
end;

procedure play(k,x,y:Longint);
var
  i:longint;
begin
       step[k,1]:=x;
       step[k,2]:=y;

       if (x=4)and(y=4)and(k<maxd) then
        begin
             maxd:=k;
             s:=step;
        end;

       if check(x+1,y) then play(k+1,x+1,y);
       if check(x,y+1) then play(k+1,x,y+1);
end;


begin
//     assign(input,'win.in');
//     assign(output,'win.out');
//     reset(input);
//     rewrite(output);

     maxd:=100;

     for i:=0 to 4 do
      begin
        for j:=0 to 4 do  read(map[i,j]);
        readln;
      end;

     play(1,0,0);

     for i:=1 to maxd do writeln('(',s[i,1],',',s[i,2],')');
 //    close(input);
 //    close(output);
end.

 用递归写搜索问题 这是爽啊

posted @ 2012-03-28 17:40  翱翔的感觉  阅读(111)  评论(0)    收藏  举报