zoukankan      html  css  js  c++  java
  • 简单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 }
  • 相关阅读:
    Linux内核网络协议栈优化总纲
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3391250.html
Copyright © 2011-2022 走看看