迷宫问题(递归)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
using namespace std;
const int M=24;
const int N=52;
int success=0;
int Move(char graph[][N],int m,int n)
{
graph[m][n]='1';
if(m==M-2 && n==N-2) success=1;
if(success==0 && graph[m-1][n-1]==' ') Move(graph,m-1,n-1); //左上可走
if(success==0 && graph[m-1][n]==' ') Move(graph,m-1,n); //上可走
if(success==0 && graph[m-1][n+1]==' ') Move(graph,m-1,n+1); //右上可走if(success==0 && graph[m][n+1]==' ') Move(graph,m,n+1); //右可走
if(success==0 && graph[m+1][n+1]==' ') Move(graph,m+1,n+1); //右下可走if(success==0 && graph[m+1][n]==' ') Move(graph,m+1,n); //下可走
if(success==0 && graph[m+1][n-1]==' ') Move(graph,m+1,n-1); //左下可走if(success==0 && graph[m][n-1]==' ') Move(graph,m,n-1); //左可走
if(success!=1) graph[m][n]=' '; //当前位置无路可走
return success;
}
int main()
{
ifstream fin("data.txt");
char a[M][N];
for(int i=0;i { for(int j=0;j fin.get(a[i][j]); fin.get(); } if(Move(a,1,1)==1) { cout<<"迷宫有解\n"; for(int i=0;i { for(int j=0;j