1 #include<stdio.h>
2 #include <stdlib.h>
3 int visit(int, int);
4 int maze[11][10] =
5 {
6 {1, 1, 1, 1, 1, 1, 1, 1, 1 ,1},
7 {1, 0, 0, 1, 0, 0, 0, 1, 0 ,1},
8 {1, 0, 0, 1, 0, 0, 0, 1, 0 ,1},
9 {1, 0, 0, 0, 0, 1, 1, 0, 1 ,1},
10 {1, 0, 1, 1, 1, 0, 0, 1, 0 ,1},
11 {1, 0, 0, 0, 1, 0, 0, 0, 0 ,1},
12 {1, 0, 1, 0, 0, 0, 1, 0, 1 ,1},
13 {1, 0, 1, 1, 1, 1, 0, 0, 1 ,1},
14 {1, 1, 1, 0, 0, 0, 1, 0, 1 ,1},
15 {1, 1, 1, 0, 0, 0, 0, 0, 0, 1},
16 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
17 };
18 int startI = 1, startJ = 1; // 入口
19 int endI = 9, endJ = 8; // 出口
20 int success = 0;
21
22 int main(void) {
23 int i, j;
24
25 printf("显示迷宫:\n");
26 for (i = 0; i < 9; i++) {
27 for (j = 0; j < 8; j++)
28 if (maze[i][j] == 1)
29 printf("■");
30 else
31 printf(" ");
32 printf("\n");
33 }
34
35 if (visit(startI, startJ) == 0)
36 printf("\n沒有找到出口!\n");
37 else {
38 printf("\n显示路径:\n");
39 for (i = 0; i < 9; i++) {
40 for (j = 0; j < 8; j++) {
41 if (maze[i][j] == 1)
42 printf("■");
43 else if (maze[i][j] == 2)
44 printf("▲");
45 else
46 printf(" ");
47 }
48 printf("\n");
49 }
50 }
51
52 return 0;
53 }
54
55 int visit(int i, int j) {
56 maze[i][j] = 2;
57
58 if (i == endI && j == endJ)
59 success = 2;
60
61 if (success != 2 && maze[i][j + 1] == 0) visit(i, j + 1);
62 if (success != 2 && maze[i + 1][j] == 0) visit(i + 1, j);
63 if (success != 2 && maze[i][j - 1] == 0) visit(i, j - 1);
64 if (success != 2 && maze[i - 1][j] == 0) visit(i - 1, j);
65
66 if (success != 2)
67 maze[i][j] = 0;
68
69 return success;
70 }
1 //参考.c
2 #include<iostream>
3
4 using namespace std;
5 void strMatrix(int *a1, int **a2, int n);
6 void output(int **a2, int n);
7 int main()
8 {
9 int n, i, c, d;
10 cout << "How many numbers do you want to input:" << endl;
11 cin >> n;
12 int *arr1 = new int[n];
13 int **arr2 = new int*[n];
14 for (i = 0; i < n; i++)
15 arr2[i] = new int[n];
16 cout << "Please input the numbers:" << endl;
17 for (i = 0; i < n; i++)
18 cin >> arr1[i];
19 cout << "Please input the ralations:" << endl;
20 cin >> c;
21 cin >> d;
22 strMatrix(arr1, arr2, n);
23 output(arr2, n);
24 }
25 void strMatrix(int *a1, int **a2, int n)
26 {
27 for (int i = 0; i < n; i++)
28 for (int j = 0; j < n; j++)
29 {
30 if (a1[i] % a1[j] == 0)
31 a2[i][j] = 1;
32 else
33 a2[i][j] = 0;
34 }
35 }
36 void output(int **a2, int n)
37 {
38 for (int i = 0; i < n; i++)
39 {
40 for (int j = 0; j < n; j++)
41 cout << a2[i][j] << " ";
42 cout << endl;
43 }
44 }
45
46 void zfx(int a[M][M], int n)
47 {
48 int i = 0, vale1 = 1, vale2 = 1;/*vale1确定关系的自反性,vale2
49 判断关系的反自反性*/
50 while (i < n)
51 {
52 if (a[i][i] == 1) vale2 = 0;
53 else vale1 = 0;
54 i++;
55 }
56 if (vale1 == 1) printf("zfx\n");
57 if (vale2 == 1) printf("fzfx\n");
58 if (!(vale1) && !(vale2)) printf("wzfxywfzfx\n");
59 }
60 void dcx(int a[M][M], int n)
61 {
62 int i, j, vale3 = 1, vale4 = 1;/*vale3确定关系的对称性,vale4
63 判断关系的反对称性*/
64 for (i = 0; i < n; i++)
65 for (j = 0; j < i; j++)
66 if (a[i][j] == a[j][i])
67 vale4 = 0;
68 else vale3 = 0;
69 if (vale3 == 1) printf("dcx\n");
70 if (vale4 == 1) printf("fdcx\n");
71 if (!(vale3) && !(vale4)) printf("wdcx wfdcx\n");
72 } void cdx1(int a[M][M], int n)/*用MM ⊆2 算法来判断传递 性*/
73 {
74 int b[M][M], i, j, k, vale = 1;
75 for (i = 0; i < n; i++)
76 for (j = 0; j < n; j++)
77 {
78 b[i][j] = 0;
79 for (k = 0; k < n; k++)
80 b[i][j] += a[i][k] * a[k][j];/*计算 2M */
81 }
82 for (i = 0; i < n; i++)
83 for (j = 0; j < n; j++)
84 if (b[i][j] != 0)
85 b[i][j] = 1;
86 for (i = 0; i < n; i++)
87 for (j = 0; j < n; j++)
88 if (b[i][j] == 1)
89 if (a[i][j] != b[i][j])
90 vale = 0;
91 if (vale)
92 printf("ycdx\n");
93 else
94 printf("wcdx\n");
95 }
96 void cdx2(int a[M][M], int n)/*用warshall算法来求传递闭
97 包数组b */
98 {
99 int b[M][M], i, j, k, vale = 1;
100 for (i = 0; i < n; i++)
101 for (j = 0; j < n; j++)
102 b{ [i][j] = a[i][j];
103 for (k = 0; k < n; k++)
104 i{ (f a[i][j] && (a[i][k] || a[j][k]))
105 b[i][k] = 1;
106 }
107 }
108 for (i = 0; i < n; i++) /* 判断数组a和b相等 */
109 for (j = 0; j < n; j++)
110 (iaf[i][j] != b[i][j])
111 {
112 vale = 0; break;
113 }
114 if (vale == 1) printf("cdx\n");
115 else printf("wcdx\n");
116 }