老鼠走迷宫(老鼠走迷宫实验的启示)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 
 5 using namespace std;
 6 
 7 int visit(int, int);
 8 
 9 int maze[7][7] = {{2, 2, 2, 2, 2, 2, 2},
10                 {2, 0, 0, 0, 0, 0, 2},
11                 {2, 0, 2, 0, 2, 0, 2},
12                 {2, 0, 0, 2, 0, 2, 2},
13                 {2, 2, 0, 2, 0, 2, 2},
14                 {2, 0, 0, 0, 0, 0, 2},
15                 {2, 2, 2, 2, 2, 2, 2}};
16 int startI = 1, startJ = 1;
17 int endI = 5, endJ = 5;
18 int success = 0;
19 
20 int main()
21 {
22     int i, j;
23     printf("Display maze:

老鼠走迷宫(老鼠走迷宫实验的启示)

"); 24 for(i=0; i<7; i++) { 25 for(j=0; j<7; j++) { 26 if(maze[i][j] == 2) { 27 printf(""); 28 }else { 29 printf(" "); 30 } 31 } 32 printf("

"); 33 } 34 if(visit(startI, startJ) == 0) { 35 printf("

No exit!

"); 36 }else { 37 printf("

Display route:

"); 38 for(i=0; i<7; i++) { 39 for(j=0; j<7; j++) { 40 if(maze[i][j] == 2) { 41 printf(""); 42 }else if(maze[i][j] == 1){ 43 printf(""); 44 }else { 45 printf(" "); 46 } 47 } 48 printf("

"); 49 } 50 } 51 return 0; 52 } 53 54 int visit(int i, int j) { 55 maze[i][j] = 1; 56 57 if(i==endI && j==endJ) { 58 success = 1; 59 } 60 61 if(success!=1 && maze[i][j+1]==0) 62 visit(i, j+1); 63 if(success!=1 && maze[i+1][j]==0) 64 visit(i+1, j); 65 if(success!=1 && maze[i][j-1]==0 && j>0) 66 visit(i, j-1); 67 if(success!=1 && maze[i-1][j]==0 && i>0) 68 visit(i-1, j); 69 70 if(success != 1) { 71 maze[i][j] = 0; 72 } 73 74 return success; 75 }

转载请说明出处 内容投诉内容投诉
九幽软件 » 老鼠走迷宫(老鼠走迷宫实验的启示)