1 #include <stdio.h> 2 3 int visit(int i , int j); 4 5 int maze[7][7] = { 6 {2,2,2,2,2,2,2}, 7 {2,0,0,0,0,0,2}, 8 {2,0,2,0,2,0,2}, 9 {2,0,0,2,0,2,2}, 10 {2,2,0,2,0,2,2}, 11 {2,0,0,0,0,0,2}, 12 {2,2,2,2,2,2,2}, 13 }; 14 int si = 1 , sj = 1 ; 15 int ei = 5 , ej = 5 ; 16 int success = 0 ; 17 18 int main() 19 { 20 21 int i , j ; 22 23 printf("Display the maze :\n"); 24 for(i = 0 ; i < 7 ; i++) 25 { 26 for(j = 0 ; j < 7 ; j++) 27 { 28 if(maze[i][j] == 2) 29 { 30 printf("■"); 31 } 32 else33 { 34 printf(" "); 35 } 36 } 37 printf("\n"); 38 } 39 40 if(visit(si , sj) == 0) 41 { 42 printf("\nNot found exit !"); 43 } 44 else45 { 46 printf("Display the maze :\n"); 47 for(i = 0 ; i < 7 ; i++) 48 { 49 for(j = 0 ; j < 7 ; j++) 50 { 51 if(maze[i][j] == 2) 52 { 53 printf("■"); 54 } 55 else if(maze[i][j] == 1) 56 { 57 printf("◇"); 58 } 59 else 60 { 61 printf(" "); 62 } 63 } 64 printf("\n"); 65 } 66 } 67 return 0 ;68 } 69 70 int visit(int i , int j) 71 { 72 maze[i][j] = 1 ; 73 74 if(i == ei && j == ej) 75 success = 1 ; 76 77 if(success != 1 && maze[i][j + 1] == 0) 78 visit(i , j + 1); 79 if(success != 1 && maze[i + 1][j] == 0) 80 visit(i + 1 , j); 81 if(success != 1 && maze[i - 1][j] == 0) 82 visit(i - 1 , j); 83 if(success != 1 && maze[i][j - 1] == 0) 84 visit(i , j - 1); 85 86 if(success != 1) 87 maze[i][j] == 0 ; 88 89 return success ; 90 }
显示所有路径:
1 #include <stdio.h>
2
3 int visit(int i , int j);
4
5 int maze[9][9] = {
6 {2, 2, 2, 2, 2, 2, 2, 2, 2},
7 {2, 0, 0, 0, 0, 0, 0, 0, 2},
8 {2, 0, 2, 2, 0, 2, 2, 0, 2},
9 {2, 0, 2, 0, 0, 2, 0, 0, 2},
10 {2, 0, 2, 0, 2, 0, 2, 0, 2},
11 {2, 0, 0, 0, 0, 0, 2, 0, 2},
12 {2, 2, 0, 2, 2, 0, 2, 2, 2},
13 {2, 0, 0, 0, 0, 0, 0, 0, 2},
14 {2, 2, 2, 2, 2, 2, 2, 2, 2},
15 };
16
17 int si = 1 , sj = 1 ;
18 int ei = 7 , ej = 7 ;
19 int success = 0 ;
20
21 int main()
22 {
23
24 int i , j ;
25
26 printf("Display the maze :\n");
27 for(i = 0 ; i < 9 ; i++)
28 {
29 for(j = 0 ; j < 9 ; j++)
30 {
31 if(maze[i][j] == 2)
32 {
33 printf("█");
34 }
35 else
36 {
37 printf(" ");
38 }
39 }
40 printf("\n");
41 }
42
43 visit(si , sj) ;
44
45 return 0 ;
46 }
47
48 int visit(int i , int j)
49 {
50 int m , n ;
51 maze[i][j] = 1 ;
52
53 if(i == ei && j == ej)
54 {
55 printf("Display the maze :\n");
56 for(m = 0 ; m < 9 ; m++)
57 {
58 for(n = 0 ; n < 9 ; n++)
59 {
60 if(maze[m][n] == 2)
61 {
62 printf("█");
63 }
64 else if(maze[m][n] == 1)
65 {
66 printf("◇");
67 }
68 else
69 {
70 printf(" ");
71 }
72 }
73 printf("\n");
74 }
75 success = 1 ;
76 }
77
78
79 if(maze[i][j + 1] == 0)
80 visit(i , j + 1);
81 if(maze[i + 1][j] == 0)
82 visit(i + 1 , j);
83 if(maze[i - 1][j] == 0)
84 visit(i - 1 , j);
85 if(maze[i][j - 1] == 0)
86 visit(i , j - 1);
87
88 maze[i][j] = 0 ;
89
90 return success ;
91 }