#include <iostream>using namespace std; #define N 4#define M 4 int x,y;enum direction{UP,DOWN,LEFT,RIGHT}; char Maze[N][M] = { '1','1','1','1', '1','1','0','1', '1','0','1','1', '1','1','1','1' }; bool visited[N][M]={false}; bool available(int i,int j){ if (i == -1 || i == N)return false; if (j == -1 || j == M)return false; if (visited[i][j] == true)return false; if (Maze[i][j] == '0')return false; return true;} void MazePath(int i,int j,direction d){ visited[i][j] = true; if (i == x && j == y) { Maze[i][j] = '*'; for (int u = 0; u < N; u++) { for (int w = 0; w < M; w++) cout << Maze[u][w] << " "; cout << endl; } Maze[i][j] = '1'; visited[i][j] = false; cout << endl; } else { int a,b; //向上探索 a = i-1; b = j; if (d != DOWN && available(a,b) == true) { Maze[i][j] = '*'; MazePath(a,b,UP); Maze[i][j] = '1'; } //向下探索 a = i+1; b = j; if (d != UP && available(a,b) == true) { Maze[i][j] = '*'; MazePath(a,b,DOWN); Maze[i][j] = '1'; } //向左探索 a = i; b = j-1; if (d != RIGHT && available(a,b) == true) { Maze[i][j] = '*'; MazePath(a,b,LEFT); Maze[i][j] = '1'; } //向右探索 a = i; b = j+1; if (d != LEFT && available(a,b) == true) { Maze[i][j] = '*'; MazePath(a,b,RIGHT); Maze[i][j] = '1'; } } visited[i][j] = false;} int main(){ x = y = 3; MazePath(0,0,DOWN); system("pause"); return 0;}

评论