• 简单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("显示迷宫:
    ");
    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("
    ");
    33     }
    34 
    35     if (visit(startI, startJ) == 0)
    36         printf("
    沒有找到出口!
    ");
    37     else {
    38         printf("
    显示路径:
    ");
    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("
    ");
    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
    ");
     57     if (vale2 == 1) printf("fzfx
    ");
     58     if (!(vale1) && !(vale2)) printf("wzfxywfzfx
    ");
     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
    ");
     70             if (vale4 == 1) printf("fdcx
    ");
     71             if (!(vale3) && !(vale4)) printf("wdcx wfdcx
    ");
     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
    ");
     93         else   
     94             printf("wcdx
    ");
     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
    ");
    115         else printf("wcdx
    ");
    116 }
  • 相关阅读:
    搬运好文章->>>>>子网划分详解
    搬运好文章->>>>>子网掩码详解
    搬运好文章->>>>>IP地址和MAC地址详解
    搬运好文章->>>>>计算机中进制之间的关系和转换
    extend 与 append 的区别
    数据类型---字符串
    多引号的作用,字符串格式化
    列表复制的几种方法
    十六进制和二进制转换
    python奇偶数求和
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3391250.html
Copyright © 2020-2023  润新知