【第04题】老鼠走迷官(一)

简介: 【第04题】老鼠走迷官(一)

说明

老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。

解法

老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程式应就可以理解。

#include <stdio.h>
#include <stdlib.h> 
int visit(int, int); 
int maze[7][7] = {{2, 2, 2, 2, 2, 2, 2}, 
                  {2, 0, 0, 0, 0, 0, 2}, 
                  {2, 0, 2, 0, 2, 0, 2}, 
                  {2, 0, 0, 2, 0, 2, 2}, 
                  {2, 2, 0, 2, 0, 2, 2}, 
                  {2, 0, 0, 0, 0, 0, 2}, 
                  {2, 2, 2, 2, 2, 2, 2}}; 
int startI = 1, startJ = 1;  // 入口
int endI = 5, endJ = 5;  // 出口
int success = 0;
int main(void) { 
    int i, j; 
    printf("显示迷宫:\n"); 
    for(i = 0; i < 7; i++) { 
        for(j = 0; j < 7; j++) 
            if(maze[i][j] == 2) 
                printf("█"); 
            else 
                printf("  "); 
        printf("\n"); 
    } 
    if(visit(startI, startJ) == 0)
        printf("\n没有找到出口!\n"); 
    else { 
        printf("\n显示路径:\n"); 
        for(i = 0; i < 7; i++) { 
            for(j = 0; j < 7; j++) { 
                if(maze[i][j] == 2) 
                    printf("█"); 
                else if(maze[i][j] == 1) 
                    printf("◇"); 
                else 
                    printf("  "); 
            } 
            printf("\n"); 
        } 
    } 
    return 0; 
} 


相关文章
|
7月前
|
算法 前端开发
老鼠和奶酪
老鼠和奶酪
46 0
|
6月前
找出单身狗1,2
找出单身狗1,2
31 0
|
7月前
单身狗问题
单身狗问题
33 0
|
算法 C++
你是真的“C”——找单身狗~
初阶——找单身狗问题: 在一组数组中,有一只“单身狗”(该数字只出现一次),其他的数字都有一个和自己相同的数字。 其实解答此题有许多的方法,例如直接将数组进行一个排序,然后定义两个指针,然后寻找到单身狗。这里介绍的是用异或运算来解答这道题目,效率也比较高。
105 0
|
C语言
【C】喝汽水,找单身狗问题
【C】喝汽水,找单身狗问题
107 0
|
机器学习/深度学习 算法 程序员
【关于一个单身狗在七夕向大家分享的简单必会算法题】
七夕来袭!是时候展现专属于程序员的浪漫了!单身狗的我选择了刷题hhh
92 0
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
95 0
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
|
程序员
“三只猫,三分钟,捉三只老鼠,多少只猫,一百分钟,捉一百只老鼠”有感
      《寄存器,堆,堆栈,和一次面试的经历 》这里的关于寄存器的俺不懂,不过对于猫咪做老鼠的倒是有点感想。       三只猫,三分钟,捉三只老鼠,那么这三只可爱的猫咪是怎么找的老鼠呢?我们可以猜想一下。
1198 0
男人20不勤,30不立,40则不富……
耐心看的人早晚会成人上人 。  —— 米格 荐歌: 理想三旬陈鸿宇 - 浓烟下的诗歌电台 一、钱是给内行人赚的——世界上没有卖不出的货,只有卖不出的货的人。
1549 0
真正的男人
大学的时候看到过一篇对Real man的描述,写的很理想主义,记得当时有学长说:“里面说的都是大话,空话”,但我还是比较喜欢里面说的,虽然做不到,但毕竟是一种精神上的追求。