迷宫

原创 2015年07月10日 09:46:37
program migong;
type node=record
          xx,yy:longint;
     end;
     all=array[1..10,1..10]of longint;
 const n=400;
 dx:array[1..4]of longint=(0,1,0,-1);
 dy:array[1..4]of longint=(1,0,-1,0);
 a:all=((0,0,0,0,0,0,1,0,1,1),
        (0,1,0,1,1,0,0,0,0,0),
        (0,1,0,1,1,0,1,1,1,0),
        (0,1,0,0,0,0,0,1,0,0),
        (0,1,1,1,1,1,1,1,1,1),
        (0,0,0,1,0,1,0,0,0,0),
        (0,1,1,1,0,0,0,1,1,1),
        (0,0,0,0,0,1,0,0,0,0),
        (1,1,0,1,1,1,0,1,1,0),
        (1,1,1,1,1,1,0,1,1,1));
 var head,tail,k,x1,y1,x2,y2,nx,ny:longint;
     state:array[1..n]of node;
     father:array[1..n]of longint;
 function check:boolean;
 begin
  check:=false;
  nx:=state[head].xx+dx[k];ny:=state[head].yy+dy[k];
  if (nx<1)or(nx>10)or(ny<1)or(ny>10) then
     check:=false
      else if a[ny,nx]=1 then check:=false
       else check:=true;
 end;
 function dupe:boolean;
 var i,j:longint;buf:boolean;
 begin
  buf:=false;i:=0;
  repeat
   inc(i);
   if (state[i].xx=state[tail].xx)and(state[i].yy=state[tail].yy)then
   buf:=true else buf:=false
    until buf or(i>=tail-1);
   dupe:=buf;
   end;
   procedure print;
   var buf:array[1..n]of longint;
   i,j,m:longint;
   begin
    m:=1;j:=tail;buf[1]:=j;
    while j>0 do
     begin
      j:=father[j];
      inc(m);buf[m]:=j;
     end;
    for i:=m-1 downto 2 do
      write('(',state[buf[i]].xx,',',state[buf[i]].yy,')','--');
      writeln('(',state[buf[1]].xx,',',state[buf[1]].yy,')');
    halt;
 end;
begin
 x1:=8;y1:=1;x2:=7;y2:=10;
 state[1].xx:=x1;
 state[1].yy:=y1;
 head:=1;tail:=1;father[head]:=0;
 repeat
  for k:=1 to 4 do
   if check then
    begin
     inc(tail);
     father[tail]:=head;
     state[tail].xx:=nx;
     state[tail].yy:=ny;
     if dupe then dec(tail)
      else if (state[tail].xx=x2)and(state[tail].yy=y2)
           then print;
   end;
 head:=head+1;
 until head>tail;
end.
版权声明:本文为博主原创文章,未经博主允许不得转载。

递归与非递归实现走迷宫算法

●问题描述:   给出一个矩阵,其中0表示通路,1表示墙壁,这样就形成了一个迷宫,要求编写算法求出其中一条路径。 ●递归思路:   编写一个走迷宫函数,传入二位数组的下标,先假设该点位于最终路径上(...
  • Jung_zhang
  • Jung_zhang
  • 2015年10月09日 20:48
  • 6144

任意模型生成迷宫

前阵子写了个任意模型转换成迷宫的小东西: 根据拓扑来的,任意拓扑都行,grid可以生成标准迷宫,如果有三角面五角星能带来意想不到的效果。 拿手的模型试了试: 怎么...
  • cuckon
  • cuckon
  • 2015年01月29日 00:36
  • 3054

走迷宫回溯算法(Java实现)

以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 (1) 根据二维数组,输出迷宫的图形。 (...
  • u013474436
  • u013474436
  • 2015年08月25日 15:28
  • 4767

迷宫的最短路径之BFS算法

给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)(...
  • lrgdongnan
  • lrgdongnan
  • 2016年06月28日 10:19
  • 9089

A*算法解决迷宫问题(DIY制作地图类似于小游戏,界面设计非常不错。)

人工智能老师要求实现一个算法,刚开始的时候自己做的是一个深度优先搜索,然后又学了A*,觉得深度优先效率还是不行,就打算用A*算法实现兔子找萝卜的小游戏。   地图设计采用的是坦克大战中的地图设计图案。...
  • yujin753
  • yujin753
  • 2014年03月19日 08:41
  • 3529

C语言实现迷宫求解

最近做了一个用C语言迷宫求解的题目,来分享一下。 题目要求://迷宫的布局放入到一个二维的数组中 1代表该地方走不通为墙,0代表该地方可以走通,打印出来走的顺序  //0 , 1 , 2 , 3 ...
  • u010889616
  • u010889616
  • 2015年04月12日 11:36
  • 2051

用matlab处理蚂蚁迷宫问题

蚂蚁走迷宫 现实生活中,工蚁每天需要为蚁巢寻找食物,但是寻找的过程可能并不是一帆风顺的。它可能经过重重障碍才能找到一份食物运回蚁巢。下面请你用matlab来模拟这个寻食的过程,请看下面的矩阵,假设A...
  • YiMo_Fan
  • YiMo_Fan
  • 2017年04月27日 15:34
  • 391

c++解决迷宫寻路问题

// time.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include ...
  • sx1989827
  • sx1989827
  • 2013年03月05日 14:13
  • 2199

java用栈实现迷宫

迷宫实现算法: package algrithm; import java.util.Scanner; public class maze { public static void main(...
  • ccq1029
  • ccq1029
  • 2014年12月30日 10:59
  • 916

遗传算法的应用(求解迷宫问题)

遗传算法在实际中的应用:求解迷宫问题
  • u011889952
  • u011889952
  • 2015年04月01日 13:24
  • 1368
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迷宫
举报原因:
原因补充:

(最多只允许输入30个字)