maze.cpp

来自「单链表倒序」· C++ 代码 · 共 55 行

CPP
55
字号
#include   <iostream>   

const int size=5;   
const bool T=true;   
const bool F=false;   
bool  MARK[size][size];           

bool GetMaze(bool Maze[size][size],int x,int y); 
int main()   
{   
	bool   Maze[size][size]=                       //设置迷宫   
 {    
	{T, F, F, T, F},   
	{F, T, T, F, F},   
	{F, F, T, F, T},   
	{F, T, T, T, F},    
	{F, F, F, T, T},   
 };     
	
    int i,j;
    printf("如果迷宫不可过,没有任何输出!\n");
	printf("倒输路径:\n");
	for(i=0;i<size;i++)   
	for(j=0;j<size;j++)    
	MARK[size][size]=false;                     //判断路径是否走过的矩阵初值为零
    
	GetMaze(Maze,0,0);                                 //完成走迷宫过程
   	return   0;   
}   
  bool GetMaze(bool Maze[size][size],int x,int y)   
  {   
      int X,Y;   
	  int MOVE[8][2] = {{0, -1},{1, 0}, {0, 1}, {-1, 0}, {1, 1}, {1, -1}, {-1, -1}, {1, -1}};   
	  int i;
	  if ((size-1)==x&&(size-1)==y)              //判断迷宫是否走到头
		  return   true;   
	  else   
	  {   
		for(i=0;i<8; i++)                               //记录走过的路径,如果迷宫可通过
	  {   
		 MARK[x][y]=true;   
		 X =x+MOVE[i][0];   
		 Y =y+MOVE[i][1];   
         if(X>=0&&X<size&&Y>=0&&Y<size&&Maze[X][Y]&&!MARK[X][Y])  
		 { 
		   if(GetMaze(Maze,X,Y))                                //递归过程
           {
			   printf("y=%d , x=%d \n", X, Y);                   //输出结果
		       return true;
		   }			   
         }			 
	  }     
		  return false;    
	  }   
  } 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?