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 }
