迷宫问题(递归)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

cout<

cout<

}

}

else cout<<"该迷宫无解!"; return 0;

}

相关文档
最新文档