需求  

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

STEP 1 题目转化

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

STEP 2 编程思路

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

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

STEP 3 要点整理

  ⑴走过的格子需要标记,否则无法输出路径。

  ⑵递归算法只需弄清递归出口(即结束条件)和分解后的问题,切忌想得太深太远。

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

 #include <stdio.h>

 int maze[][] = {
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
{, , , , , , , , },
}; //构建迷宫 int start_x = , start_y = ; //设置起点
int end_x = , end_y = ; //设置终点
int success = ; int step(int x, int y); int main(int argc, char argv[])
{
int x, y; printf("maze:\n"); //打印迷宫图,为方便查看,将数字换为图形打印
for(x = ; x < ; x++)
{
for(y = ; y < ; y++)
{
if(maze[x][y] == )
printf("■");
else
printf("□");
}
printf("\n");
} if(step(start_x, start_y) == )
{
printf("No way!\n");
}
else
{
printf("You are free!\n"); for(x = ; x < ; x++)
{
for(y = ; y < ; y++)
{
if(maze[x][y] == )
printf("■");
else if(maze[x][y] == )
printf("☆");
else
printf("□");
}
printf("\n");
}
} printf("\n");
return ;
} int step(int x, int y) //用递归算法求解路径
{
maze[x][y] = ; if(x == end_x && y == end_y)
{
success = ;
} if(success != && y < (LEN - 1) && maze[x][y + ] == ){step(x, y + );}
if(success != && x > 0 && maze[x][y - ] == ){step(x, y - );}
if(success != && x < (LEN - 1) && maze[x + ][y] == ){step(x + , y);}
if(success != && y > 0 && maze[x - ][y] == ){step(x - , y);} if(success != )
{
maze[x][y] = ;
} return success;
}

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

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

老鼠走迷宫(1)输出唯一路径(C语言)的更多相关文章

  1. 老鼠走迷宫II

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

  2. 老鼠走迷宫I

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

  3. 老鼠走迷宫(2)输出所有路径(C语言)

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

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

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

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

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

  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. 切换usb口的命令

    open:dd if=imx6dl-sabresd-usboc.dtb of=/dev/mmcblk0 bs=512 seek=1536 conv=fsyncclose:dd if=imx6dl-sa ...

  2. 两种ajax的方法

    两种Ajax方法 Ajax是一种用于快速创建动态网页的技术,他通过在后台与服务器进行少量的数据交换,可以实现网页的异步更新,不需要像传统网页那样重新加载页面也可以做到对网页的某部分作出更新,现在这项技 ...

  3. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块等的加载顺序

    转自:http://blog.csdn.net/mrzhoug/article/details/51581994 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普 ...

  4. Python爬虫学习笔记之爬虫基础库

    知识预览 beautifulsoup的简单使用 beautifulsoup的遍历文档树 beautifulsoup的搜索文档树 beautifulsoup的css选择器 回到顶部 beautifuls ...

  5. WCF用户名密码验证方式

    WCF使用用户名密码验证 服务契约 namespace WCFUserNameConstract { [ServiceContract] public interface IWcfContract { ...

  6. 设置 vadio 和checkbox是否选中

    1.js方案 <!DOCTYPE html> <html> <head> <meta charset=utf-8 />  <title>te ...

  7. java语言学习笔记1

    最近也在春节的节假日里,总是会有各种各样的事情出现,没有很完整的时间来学习java以及其他方面的知识. 从昨天开始有了完整的学习体系,我去娄老师推荐的极客学院网站开始学习java语言的语法.在假期之初 ...

  8. Hive架构

    Hive组织数据包含四种层次:DataBase --> Table --> Partition --> Bucket,对应在HDFS上都是文件夹形式. 数据库和数据仓库的区别: 1) ...

  9. cogs 341:[NOI2005] 聪聪与可可

    ★★   输入文件:cchkk.in   输出文件:cchkk.out   简单对比 时间限制:1 s   内存限制:256 MB [问题描述] 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小 ...

  10. 异步:asyncio和aiohttp的一些应用(2)

    转自:原文链接:http://www.cnblogs.com/ssyfj/p/9222342.html 1.aiohttp的简单使用(配合asyncio模块) import asyncio,aioht ...