简单C程序,迷宫
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 }