TA的每日心情 | 开心 2014-6-18 08:29 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
滴水大师
- 积分
- 2345
|
本帖最后由 大灰狼 于 2014-8-7 09:27 编辑
题目
解决代码及点评
- <pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">/************************************************************************/
- /*
- 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[j+1]==0&&j+1<6)
- { j=j+1;
- arr[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[j]=5;
- }
- else
- continue;
- }
- else if (m==2)
- { if (kk==0)
- continue;
-
- if (arr[j-1]==0&&j-1>=0)
- {j=j-1;
- arr[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[j]=5;
- }
- else
- continue;
- }
- #pragma endregion 条件匹配
-
- isfound=GO82(arr,i,j,m);
- if (!isfound)
- {
- #pragma region 条件匹配
- if (m==0)
- { arr[j]=0;
- j=j-1;
- }
-
-
- else if (m==1)
- {
- arr[j]=0;
- i=i-1;
-
- }
- else if (m==2)
- {
- arr[j]=0;
- j=j+1;
-
- }
- else if (m==3)
- {
- arr[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");
- }</pre><br><br><br></pre></pre></pre>
|
|