
题目
解决代码及点评
/************************************************************************/ /* 82. 试编写一个程序寻找一条通过迷宫的路径。 一个迷宫可以看成是一个矩阵(数组),它有一个入口单元和一个出口单元,图中阴影处表示障碍物,白格表示可以通行的道路。 只能从入口进去,从出口出去,中间只能通过白格子(即只能从一个白格单元走到一个相邻的白格单元,相邻指上、下、左、右四个单元) ,遇见死路时,退回去重找其它路。用户可设入口处(1,1)为2,出口位置(5,6)为-1,白格处送入0,障碍物位置送入1。5表示走过的 */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> bool GO82(int arr[][6],int i,int j,int kk) { bool isfound=false; if (i==4&&j==5) { isfound=true; printf("\n大爷出来了\n"); for (int p=0;p<6;p++) { for (int q=0;q<6;q++) { if (arr[p][q]==5) { printf("%d%d",p,q); } else { printf(" "); } } printf("\n"); } } else { for (int m=0;m<=3;m++) { #pragma region 条件匹配 if (m==0) { if (kk==2) continue; if (arr[i][j+1]==0&&j+1<6) { j=j+1; arr[i][j]=5; } else continue; } else if (m==1) { if (kk==3) continue; if (arr[i+1][j]==0&&i+1<6) { i=i+1; arr[i][j]=5; } else continue; } else if (m==2) { if (kk==0) continue; if (arr[i][j-1]==0&&j-1>=0) {j=j-1; arr[i][j]=5; } else continue; } else if (m==3) { if (kk==1) continue; if (arr[i-1][j]==0&&i-1>=0) {i=i-1; arr[i][j]=5; } else continue; } #pragma endregion 条件匹配 isfound=GO82(arr,i,j,m); if (!isfound) { #pragma region 条件匹配 if (m==0) { arr[i][j]=0; j=j-1; } else if (m==1) { arr[i][j]=0; i=i-1; } else if (m==2) { arr[i][j]=0; j=j+1; } else if (m==3) { arr[i][j]=0; i=i+1; } #pragma endregion 条件匹配 } } } return isfound; } void main() { int arr[6][6]={0}; arr[0][0]=2; //arr[4][5]=-1; arr[0][1]=1; arr[0][5]=1; arr[1][3]=1; arr[1][5]=1; arr[2][0]=1; arr[2][2]=1; arr[2][5]=1; arr[3][3]=1; arr[3][4]=1; arr[3][5]=1; arr[4][1]=1; arr[4][2]=1; arr[5][4]=1; arr[5][5]=1; bool temp= GO82(arr,0,0,-10); if (temp==false) { printf("死路\n"); } system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn