.OOP解决迷宫问题
开始寻找路径 左上角 -》右下角 顺
该迷宫不存在路径
路径->
1 墙 0 路 -> 路径
/***************OOP解决迷宫问题******************/
/*
2.OOP解决迷宫问题
开始寻找路径 左上角 -》右下角 顺
该迷宫不存在路径
路径->
1 墙 0 路 -> 路径
*/
<span style="color:#006600;">//OOP解决迷宫问题
#include<iostream>
#include<stack>
using namespace std;
char maze[10][10] = {
{ '0','1','1','1','1','1','1','1','1','1' },
{ '0','1','0','1','1','1','1','1','1','1' },
{ '0','0','0','1','1','1','1','0','0','0' },
{ '1','0','0','0','0','1','1','0','1','0' },
{ '1','0','1','1','0','1','1','0','1','0' },
{ '1','0','1','1','0','1','1','0','1','0' },
{ '1','1','0','0','0','1','1','0','1','0' },
{ '1','1','0','1','1','1','1','0','1','0' },
{ '1','1','0','0','0','0','0','0','1','0' },
{ '1','1','1','1','1','1','1','1','1','0' },
};
void show()
{
for(int i=0;i<sizeof(maze)/sizeof(maze[0]);i++)
{
for (int j = 0;j < sizeof(maze[0]) / sizeof(maze[0][0]); j++)
{
cout << maze[i][j] << " ";
}
cout << endl;
}
}
void find1(int i,int j)
{
if (maze[i][j] == '1') return ;
if (maze[i][j] == '#') return;
if (maze[i][j]='#' && j==9 && i==9 )
{
cout << "找到路径" << endl;
show();
exit(0);
}
maze[i][j] = '#';
find1(i, j + 1);
find1(i + 1, j);
find1(i, j - 1);
find1(i - 1, j);
}
void find2()
{
int i = 0;
int j = 0;
stack<char> s;
s.push(maze[i][j]);
maze[i][j] = '#';
cout << "进入方法!" << endl;
while (true)
{
if (maze[i][j + 1] == '0')
{
s.push(maze[i][++j]);
maze[i][j] = '#';
}
else if (maze[i + 1][j] == '0')
{
s.push(maze[++i][j]);
maze[i][j] = '#';
}
else if (maze[i][j-1] == '0')
{
s.push(maze[i][--j]);
maze[i][j] = '#';
}
else if (maze[i -1][j] == '0')
{
s.push(maze[--i][j]);
maze[i][j] = '#';
}
if (maze[i][j + 1] != '0' && maze[i + 1][j] != '0' &&
maze[i][j - 1] != '0' && maze[i - 1][j] != '0')
{
if (i >= 9 && j >= 9)
{
break;
}
else
{
maze[i][j] = '*';
s.pop();
}
char tmp = s.top();
s.push(tmp);
}
}
show();
}
int main()
{
show();
// find1(0, 0);
find2();
return 0;
}
</span>
闲来无聊打打代码