zoukankan      html  css  js  c++  java
  • 迷宫问题pascal程序

    Description

    设有一个n×n的方格迷宫,入口和出口分别在左上角和右上角(如图的示)

    迷宫的格子分别放有0和1,0表示可通,1表示不能,迷宫走的规则如下图所示。

    即从某点出发,可沿8个方向前进,前进方格中的数为0时表示可以通过,为1时表示不可以通过,如从入口开始,有2条路可以走,即向右走,或向右下角走,当迷宫给出后,找出一条从入口(1,1)到出口(1,8)的有多少条不同的中路径。

    Input

    Output

    Sample Input

    8
    0 0 0 1 1 0 1 0
    1 0 1 1 0 1 1 0
    0 1 0 0 1 0 0 1
    0 0 1 1 0 1 0 1
    0 1 0 0 0 1 1 0
    0 1 1 1 1 1 0 1
    0 0 1 1 1 0 1 1
    1 1 0 0 0 0 0 0
    

    Sample Output

    720



    这题我是用搜索来做的

    搜的时候,能走八个方向,如果下一个点能走就记录下来,继续搜。


    var
    n,x,y,s,t,i,j:longint;
    a:array[0..1001,0..1001]of longint;
    b:array[0..1001]of longint;
    dx:array[1..8]of longint=(0,0,1,1,1,-1,-1,-1);
    dy:array[1..8]of longint=(1,-1,0,1,-1,0,1,-1);
    procedure search(x,y:longint);
    var
    i:longint;
    begin
        if (x=1)and(y=n) then
        begin
            inc(t);
            exit;
        end else
        for i:=1 to 8 do
        if (a[x+dx[i],y+dy[i]]<>1)and(x+dx[i] in [1..n])and(y+dy[i] in [1..n]) then
        begin
            a[x+dx[i],y+dy[i]]:=1;
            search(x+dx[i],y+dy[i]);
            a[x+dx[i],y+dy[i]]:=0;
        end;
    end;
    
    begin
        readln(n);
        for i:=1 to n do
        begin
            for j:=1 to n do
            read(a[i,j]);
            readln;
        end;
        s:=0;t:=0;
        a[1,1]:=1;
        search(1,1);
        write(t);
    end.
    
    
    

  • 相关阅读:
    RabbitMQ安装与配置
    在Web项目中使用shiro
    solr整合spring
    mycat
    SpringSession管理
    Nginx安装与配置(Nginx服务器和Tomcat服务器是不同的服务器)
    dubbo负载均衡与服务降级以及Zookeeper认证
    小笔记
    SpringMVC路径转发与重定向
    java-同步控制及不可变设置(只读访问)
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500241.html
Copyright © 2011-2022 走看看