0
点赞
收藏
分享

微信扫一扫

求解迷宫问题

沪钢木子 2022-04-06 阅读 68
算法

问题描述

有一 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
*/
举报

相关推荐

0 条评论