问题描述
有一 8×8 的迷宫图,其中 O 表示通路方块,X 表示障碍方块。假设入口位置为 (0,0),出口为右下角方块位置 (7,7)。设计一个程序求指定入口到出口的一条迷宫路径。
输入描述
8 行,每行 8 个字符表示迷宫。
输入保证至少存在一条合法路径。
输出描述
8 行,每行 8 个字符,空格表示所选路径。
样例输入
Copy to Clipboard
OXXXXXXX OOOOOXXX XOXXOOOX XOXXOXXO XOXXXXXX XOXXOOOX XOOOOXOO XXXXXXXO
样例输出
Copy to Clipboard
XXXXXXX OOOXXX X XXOOOX X XXOXXO X XXXXXX X XX X X X XXXXXXX
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-27 10:13:54
* @LastEditTime: 2022-04-06 11:30:22
*/
#include<bits/stdc++.h>
using namespace std;
const int N = 10;
char a[N][N];
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
int n,m;
void dfs(int x,int y)
{
if(x == 8= 8){
for(int i = 1;i <= 8;i ++){
for(int j = 1;j <= 8;j ++)
cout << a[i][j];
cout << endl;
}
exit(0);
}
for(int i = 0;i < 4;i ++){
int tx = x + dx[i];
int ty = y + dy[i];
if(tx > 0 8&&ty > 08&&a[tx][ty] == 'O'){
a[tx][ty] = ' ';
dfs(tx,ty);
a[tx][ty] = 'O';
}
}
return;
}
int main()
{
for(int i = 1;i <= 8;i ++)
for(int j = 1;j <= 8;j ++)
cin >> a[i][j];
// for(int i = 1;i <= 8;i ++){
// for(int j = 1;j <= 8;j ++)
// cout << a[i][j];
// cout << endl;
//}
a[1][1] = ' ';
dfs(1,1);
}
/*
OXXXXXXX
OOOOOXXX
XOXXOOOX
XOXXOXXO
XOXXXXXX
XOXXOOOX
XOOOOXOO
XXXXXXXO
*/