需求  

  有一个迷宫,在迷宫的某个出口放着一块奶酪。将一只老鼠由某个入口处放进去,它必须穿过迷宫,找到奶酪。请找出它的行走路径。

STEP 1 题目转化

  我们用一个二维数组来表示迷宫,用2表示迷宫的墙壁,用0表示通路。
  老鼠每走到一个格子的时候就将该位置的值置为1,表示老鼠的行走路径包括这个格子。

STEP 2 编程思路

  ⑴这个题目可以用递归方法,只需要最后一步走到迷宫出口所在的格子。

  ⑵每一步测试上、下、左、右四个方向,选择一个方向前进。

STEP 3 要点整理

  ⑴输出所有路径的算法与输出单条路径相同,需要修改的是:打印函数放入递归函数中,才能实现多次输出。

  ⑵在递归选择下一步方向时,if条件添加“x < LEN && y < LEN”,避免溢出。

----------------------------------华丽丽的分割线---------------------------代码君要出场了-------------------

 #include <stdio.h>
#include <stdlib.h> #define LEN 9 int maze[LEN][LEN] = {
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
}; //构建迷宫 int start_x = , start_y = ; //设置起点
int end_x = , end_y = ; //设置终点 void step(int x, int y);
void print_maze(); int main(int argc, char argv[])
{ printf("maze:\n"); //打印迷宫图,为方便查看,将数字换为图形打印
print_maze(); step(start_x, start_y); return ;
} void step(int x, int y) //用递归算法求解路径
{
maze[x][y] = ; if(x == end_x && y == end_y)
{
print_maze(); //打印函数放入递归中,每找到一条成功路径打印一次
} if(y < (LEN - ) && maze[x][y + ] == ){step(x, y + );} //边界条件,避免溢出,感谢 @别把白天当黑夜 指正
if(x < (LEN - ) && maze[x + ][y] == ){step(x + , y);}
if(y > && maze[x][y - ] == ){step(x, y - );}
if(x > && maze[x - ][y] == ){step(x - , y);} maze[x][y] = ;
} void print_maze()
{
int x, y; for(x = ; x < LEN; x++)
{
for(y = ; y < LEN; y++)
{
if(maze[x][y] == )
printf("■");
else if(maze[x][y] == )
printf("☆");
else if(maze[x][y] == )
printf("□");
}
printf("\n");
} printf("\n");
}

欢迎转载,请备注原始连接http://www.cnblogs.com/liuliuliu/p/3885099.html,并注明转载。

作者bibibi_liuliu,联系方式395985239@qq.com

老鼠走迷宫(2)输出所有路径(C语言)的更多相关文章

  1. 老鼠走迷宫II

    转自:http://blog.csdn.net/holymaple/article/details/8636234 由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不止一条,如何求出所有的路径呢? 解法 ...

  2. 老鼠走迷宫I

    转自:http://blog.csdn.net/holymaple/article/details/8582517 说明:老鼠走迷宫是递回求解的基本提醒,我们在二维阵列中使用2来表示迷宫墙壁,使用1来 ...

  3. noj电子老鼠走迷宫(深搜dfs)超时错误

    1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色 ...

  4. noj->电子老鼠走迷宫

    00 问题 描述: 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路.电子老鼠可以在路上向上.下.左.右行走,每一步走一个格子.现给定一个起 ...

  5. 老鼠走迷宫(1)输出唯一路径(C语言)

    需求 有一个迷宫,在迷宫的某个出口放着一块奶酪.将一只老鼠由某个入口处放进去,它必须穿过迷宫,找到奶酪.请找出它的行走路径. STEP 1 题目转化 我们用一个二维数组来表示迷宫,用2表示迷宫的墙壁, ...

  6. Java与算法之(5) - 老鼠走迷宫(深度优先算法)

    小老鼠走进了格子迷宫,如何能绕过猫并以最短的路线吃到奶酪呢? 注意只能上下左右移动,不能斜着移动. 在解决迷宫问题上,深度优先算法的思路是沿着一条路一直走,遇到障碍或走出边界再返回尝试别的路径. 首先 ...

  7. 洛谷P1238 走迷宫

    洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...

  8. NYOJ306 走迷宫(dfs+二分搜索)

    题目描写叙述 http://acm.nyist.net/JudgeOnline/problem.php?pid=306 Dr.Kong设计的机器人卡多非常爱玩.它经常偷偷跑出实验室,在某个游乐场玩之不 ...

  9. P1238 走迷宫

    原题链接 https://www.luogu.org/problemnew/show/P1238 为了巩固一下刚学习的广搜,练一下迷宫类型的题 不过这道题我用的深搜..... 看问题,我们就知道这道题 ...

随机推荐

  1. Ubuntu 14.04.5 imx6 开发环境搭建

    1,下载VMware Workstation虚拟机 地址:http://1.xp510.com:801/xp2011/VMware10.7z 2,下载Ubuntu 14.04.5 LTS 32位Ubu ...

  2. 【Python】模块

    廖雪峰教程笔记. [使用模块有什么好处?] 1.使用模块可以避免函数名和变量名冲突. 2.大大提高了代码的可维护性. [使用模块的注意点] 1.每一个.py文件就是一个模块. 2.每一个包目录下面必须 ...

  3. Nginx访问控制_IP访问控制(http_access_module)原理、局限性、解决方法讲解

    基于IP的访问控制,基于Nginx的http_access_module模块,是Nginx本身内置的模块,不需要安装的时候配置.也就是允许哪些IP访问,不允许哪些IP访问 server { liste ...

  4. 20145310 《Java程序设计》第9周学习总结

    20145310 <Java程序设计>第9周学习总结 教材学习内容总结 本周主要进行第十六章和第十七章的学习. JDBC全名Java DataBase Connectivity,是java ...

  5. HelloWorld程序编写调试及错误解决

    HelloWorld程序编写调试及错误解决 eclipse软件编写 相较于windows内置记事本,eclipse编写程序更为简单快捷.由其生成的程序模板编写如下: package helloworl ...

  6. 20145324 《Java程序设计》第3周学习总结

    20145324 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 1.要产生对象必须先定义类,类是对象的设计图,对象是类的实例,建立实例要用new 2.参数名称与对象数据成员 ...

  7. Linux环境下的CPU消耗分析

    在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程.在CPU消耗分析中,我们还经常遇到下面几个概念. 上下文切换         ...

  8. sleep(),wait(),yield()和join()方法的区别

    sleep() sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级 的线程得到执行的机会,也可以让低优先级的线 ...

  9. RabbitMQ入门(1)——Hello World

    这系列是官网的翻译和一些博客的参考,仅供自己复习使用. 介绍 官网定义: RabbitMQ is the most widely deployed open source message broker ...

  10. hdu 4825 Xor Sum trie树

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Proble ...