• 电子老鼠闯迷宫pascal解题程序


    这题我是用广度优先搜索的方法来写的

    head是头指针,tail是尾指针

    我先找出下一个点,再判断这个点能不能走,能走就记录该点,到达终点时,就输出。
    我是用递归的方法输出的



    const

    maxn=12;
    wayn=4;
    dx:array[1..wayn]of longint=(-1,0,1,0);
    dy:array[1..wayn]of longint=(0,1,0,-1);
    var
    px,py,qx,qy,s,last:longint;
    a:array[0..maxn+1,0..maxn+1]of longint;
    father:array[1..maxn*maxn]of longint;
    state:array[1..maxn*maxn,1..2]of longint;


    procedure init;
    var
    i,j,n:longint;
    begin
        readln(n);
        readln(px,py,qx,qy);
        for i:=1 to n do
        begin
            for j:=1 to n do
            read(a[i,j]);
            readln;
        end;
    end;


    function check(x,y:integer):boolean;
    begin
        check:=true;
        if (x<1)or(x>12)or(y<1)or(y>12) then check:=false;
        if a[x,y]=1 then check:=false;
    end;


    procedure print(x:longint);
    begin
        if x=0 then exit;
        inc(s);
        print(father[x]);
        if x<>last then write('(',state[x,1],',',state[x,2],')->') else
        writeln('(',state[x,1],',',state[x,2],')');
    end;


    procedure bfs;
    var
    tail,head,k,i:integer;
    begin
        head:=0;tail:=1;state[1,1]:=px;state[1,2]:=py;
        father[1]:=0;
        repeat
             inc(head);
             for k:=1 to wayn do
             if check(state[head,1]+dx[k],state[head,2]+dy[k]) then
             begin
                 inc(tail);
                 father[tail]:=head;
                 state[tail,1]:=state[head,1]+dx[k];
                 state[tail,2]:=state[head,2]+dy[k];
                 a[state[tail,1],state[tail,2]]:=1;
                 if (state[tail,1]=qx)and(state[tail,2]=qy) then
                 begin
                     s:=0;
                     last:=tail;
                     print(tail);
                     writeln(s);
                     tail:=0;
                 end;
             end;
        until head>=tail;
    end;
    begin
        init;
        bfs;

    end.


    这题是我第一次用广度优先搜索的方法来写程序,希望我能把广度优先搜索学会。

  • 相关阅读:
    前端性能优化
    CSS实现文字在容器中对齐方式
    spring里面的context:component-scan
    Builder模式
    idea无法新建maven项目
    Java-位运算
    pg数据库数据表异常挂起
    Java-多线程与单例
    Java-数据结构之二叉树练习
    Java-JNA使用心得
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500248.html
Copyright © 2020-2023  润新知