java递归老鼠走迷宫_老鼠走迷宫----------递归问题
老鼠走迷宫是一个典型的递归的问题,写几个这样的题才可以充分理解递归的过程。
写递归的过程有几点需要注意:
(1)递归结束的条件
(2)递归过程的脉络,即逻辑要清晰。
/
//
// 在迷宫中显示老鼠能走出的迷宫的一条路径
//
//
/
#include
#include
#define Wide 8
#define Height 8
// 迷宫设计
int maze[8][8] = {
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 } ,
{ 1 , 0 , 0 , 0 , 1 , 1 , 1 , 1 } ,
{ 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 } ,
{ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 1 } ,
{ 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 } ,
{ 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 } ,
{ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 } ,
{ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 } } ;
int startX = 1 ; // 开始处
int startY = 1 ;
int endX = 6 ; // 结束处
int endY = 6 ;
bool success = false ;
// 显示迷宫
void showMaze()
{
for( int i = 0 ; i < Wide ; i++ )
{
for( int j = 0 ; j < Height ; j++ )
{
if( maze[i][j] == 1 )
{
printf("□") ;
}
else
{
printf(" ") ;
}
}
printf("\n") ;
}
}
// 显示结果
void showResult()
{
for( int i = 0 ; i < Wide ; i++ )
{
for( int j = 0 ; j < Height ; j++ )
{
if( maze[i][j] == 1 )
{
printf("□") ;
}
else if( maze[i][j] == 2 )
{
printf("☆") ;
}
else
{
printf(" ") ;
}
}
printf("\n") ;
}
}
int visit( int x , int y )
{
maze[x][y] = 2 ; // 标记为路径中的一点
if( x == endX && y == endY ) // 判断是否到达终点
{
success = true ; // 找到终点
return 1 ;
}
// 向上
if( maze[x-1][y] == 0 )
{
if( visit( x-1 , y ) == 1 )
{
return 1 ;
}
}
// 向下
if( maze[x+1][y] == 0 )
{
if( visit( x+1 , y) == 1 )
{
return 1 ;
}
}
// 向左
if( maze[x][y-1] == 0 )
{
if( visit( x , y - 1 ) == 1 )
{
return 1 ;
}
}
// 向右
if( maze[x][y+1] == 0 )
{
if( visit( x , y + 1 ) == 1 )
{
return 1 ;
}
}
maze[x][y] = 0 ; // 说明此位置无法到达终点,在路径中去掉该点
return -1 ;
}
int main()
{
int x = startX ;
int y = startY ;
showMaze() ;
printf("\n\n") ;
visit( x , y ) ;
if( success == false )
{
printf("找不到终点!\n") ;
}
else
{
printf("找到终点!\n") ;
showResult() ;
}
return 0 ;
}
java递归老鼠走迷宫_老鼠走迷宫----------递归问题相关推荐
- 编程题走迷宫_编程题迷宫求解
迷宫求解问题 摘 要:用矩阵表示迷宫,将矩阵表示的迷宫转换成无向图, 用邻接表存储.对无向图从入 口结点开始广度优先搜索, 用一个一维数组存储各个结点的前驱结点的编号, 通过出口结点 Vn 找到其前驱 ...
- java老鼠走迷宫算法_老鼠走迷宫java算法
说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...
- java 递归生成格雷码_格雷码的递归生成
问题:产生n位元的全部格雷码.html 格雷码(Gray Code)是一个数列集合,每一个数使用二进位来表示,假设使用n位元来表示每一个数字,任两个数之间只有一个位元值不一样. 例如如下为3位元的格雷 ...
- android 高仿随便走,随便走下载_随便走APP手机最新版安装 - 风云下载
随便走APP是一款关于出行的软件.软件能够带着用户们前往更多的方向,还能够在这里提供更多吃喝玩乐的服务,在这里还能够进行更好地旅游,提供更多的服务的方法.想要了解更多的信息吗?想要在这里掌握更多的美食 ...
- java鬼吹灯搬山法杖_鬼吹灯昆仑迷宫技能搭配之搬山篇攻略心得
有的新手玩家可能对<鬼吹灯昆仑迷宫>相对复杂的技能搭配犯晕.小编下面整理了一下搬山职业的主流技能搭配套路,希望可以帮助新手玩家更好的入手. 下面所说的技能情况均以主角技能说明,伙伴的技能与 ...
- python递归实现文件复制_在python中递归复制文件或目录
python似乎有复制文件的功能(如shutil.copy)和复制目录的功能(如shutil.copytree),但我没有找到同时处理这两者的功能.当然,检查您是想复制一个文件还是一个目录是很简单的, ...
- 递归系统卷积码译码_编码器使用RSC递归系统卷积码. RSC码由前馈多项式和反馈多项式确定....
编码器使用RSC递归系统卷积码. RSC码由前馈多项式和反馈多项式确定. 反馈变量检查输出是编码器输入位. 该主题的编码框图如图22所示. 交织器的使用是实现Turbo码的近似随机编码的关键. 交织器 ...
- java 迷宫代码_老鼠走迷宫代码 JAVA
展开全部 //老鼠走迷宫程序 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Maze1 ...
- c语言 老鼠乘法,c语言-老鼠走迷宫逐步理解
c语言实现老鼠走迷宫 在没有智能手机的时代,不少人玩游戏会玩老鼠走迷宫这样的闯关游戏.每一关有着不同的地图场景,可能还会充斥着各种障碍. 老鼠走迷宫是经典的递回求解的算法题 我们用二维数组表示迷宫场景 ...
最新文章
- ITK:创建3D体积
- 显卡A卡和N卡有什么区别
- linux追加内核参数,Linux设置内核参数的方法
- php 打印对象到文件,php实现将数组或对象写入到文件的方法小结【三种方法】...
- python怎么退出全屏_wxPython:退出全屏
- Linux系统内存管理实验报告,Linux 内存管理 综合实验报告.pdf
- WCF元数据发布的2种方式:httpGetEnabled与mex
- mysql sql汇总查询将两个结果集合并一行展示
- 佛系青蛙外挂横行,20 元可买 21 亿无限三叶草
- NOIP经典基础模板总结
- 计算机硬盘 安装,电脑新硬盘如何安装系统
- 基于BOW模型的图像检索
- Server2003安装SQL2000企业版
- python图片自动上色_自己实现黑白图片自动上色AI(一)
- java分数计算_分数计算java
- 隐藏app界面和桌面应用程序图标的方法
- 从现实世界的角度去理解计算机领域的知识
- Personalized Ranking Metric Embedding for Nest New POI Recommendation
- As Error:Failed to find configured root that contains /storage/emulated/0/xxx/xxx/xxx.png
- mysql转拼音首字母大写_Mysql中文汉字转拼音的实现 mysql首字母转化为大写