zoukankan      html  css  js  c++  java
  • 老鼠走迷宫

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 int visit(int, int);
     4 
     5 int maze[7][7] = 
     6 
     7 {
     8 {2, 2, 2, 2, 2, 2, 2},
     9 {2, 0, 0, 0, 0, 0, 2},
    10 {2, 0, 2, 0, 2, 0, 2},
    11 {2, 0, 0, 2, 0, 2, 2},
    12 {2, 2, 0, 2, 0, 2, 2},
    13 {2, 0, 0, 0, 0, 0, 2},
    14 {2, 2, 2, 2, 2, 2, 2}
    15 };
    16 int startI = 1, startJ = 1; // 指定入口
    17 int endI = 5, endJ = 5; // 指定出口
    18 int success = 0;//用来标记 visit 函数的结果
    19 
    20 int main(void)
    21 {
    22     int i, j;
    23     printf("显示迷宫:
    ");
    24     for(i = 0; i < 7; i++) 
    25     {
    26         for(j = 0; j < 7; j++)
    27         if(maze[i][j] == 2)
    28         printf("*");
    29         else
    30             printf(" ");
    31         printf("
    ");
    32     }
    33     if(visit(startI, startJ) == 0)
    34         printf("
     没有找到出口!
    ");
    35     else 
    36     {
    37         printf("
     显示路径:
    ");
    38         for(i = 0; i < 7; i++) 
    39         {
    40             for(j = 0; j < 7; j++) 
    41             {
    42                 if(maze[i][j] == 2)
    43                     printf("*");
    44                 else if(maze[i][j] == 1)
    45                     printf("#");
    46                 else
    47                     printf(" ");
    48             }
    49             printf("
    ");
    50         } 
    51     }
    52     return 0;
    53 }
    54 int visit(int i, int j) 
    55 {    //递归算出老鼠该走的道路,上下方向判断
    56     maze[i][j] = 1;
    57     if(i == endI && j == endJ)//说明到达了指定的出发点
    58         success = 1;
    59     if(success != 1 && maze[i][j+1] == 0) visit(i, j+1);
    60     if(success != 1 && maze[i+1][j] == 0) visit(i+1, j);
    61     if(success != 1 && maze[i][j-1] == 0) visit(i, j-1);
    62     if(success != 1 && maze[i-1][j] == 0) visit(i-1, j);
    63     if(success != 1)
    64         maze[i][j] = 0;
    65     return success;
    66 }
    老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。
    解法
    老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,
    无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止
     
     
  • 相关阅读:
    innodb_fast_shutdown中值为1或者2的区别是?
    C语言解析日志,存储数据到伯克利DB 2
    (2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
    C语言解析日志,存储数据到伯克利DB
    awk的接口实现方案1
    谷歌开源Gumbo:纯C语言实现的HTML5解析库
    pylint
    提高写代码的能力(转载)
    python的闭包以及闭包在设计里的意图和作用
    痛并快乐的造轮子之旅:awk访问数据库之旅
  • 原文地址:https://www.cnblogs.com/ranzhong/p/13735109.html
Copyright © 2011-2022 走看看