2022年迷宫递归算法 .pdf

上传人:H****o 文档编号:33656484 上传时间:2022-08-12 格式:PDF 页数:4 大小:51.86KB
返回 下载 相关 举报
2022年迷宫递归算法 .pdf_第1页
第1页 / 共4页
2022年迷宫递归算法 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年迷宫递归算法 .pdf》由会员分享,可在线阅读,更多相关《2022年迷宫递归算法 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、#include #include #define W 80 /迷宫宽的最大值#define H 60 /迷宫高的最大值/* 迷宫单元格状态: VIA: 已经过 ;BLOCK: 阻塞 ;EMPTY: 空的 . */ typedef enum VIA,BLOCK,EMPTY MazeCellStatus; typedef struct int x,y; /单元格的坐标 CellType; /迷宫单元格的类型typedef struct CellType pathW*H; /经过路径int length; /经过长度 MazePathType; /迷宫路线类型/= void outSolution

2、(MazePathType mazePath); /输出迷宫问题的解void trySolution(MazeCellStatus mazeW,int w,int h,CellType exit, CellType cur,MazePathType mazePath);/试探求解下一位置void mazeSolution(MazeCellStatus mazeW,int w,int h, CellType entry,CellType exit); /迷宫问题/= /* 主函数部分 */ int main(void) MazeCellStatus mazeHW = EMPTY ,BLOCK,B

3、LOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK, EMPTY ,BLOCK,EMPTY,EMPTY ,BLOCK,EMPTY ,EMPTY ,EMPTY ,BLOCK,BLOCK, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - EMPTY ,EMPTY ,EMPTY ,BLOCK,BLOCK,EMPTY,BLOCK,EMPTY ,EMPTY ,BLOCK, EMPTY ,BLOCK

4、,BLOCK,EMPTY,EMPTY ,EMPTY ,BLOCK,BLOCK,EMPTY,BLOCK, EMPTY ,EMPTY ,EMPTY ,EMPTY ,EMPTY ,EMPTY ,EMPTY ,EMPTY ,EMPTY ,BLOCK, BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,BLOCK,EMPTY,EMPTY, ; CellType entry = 0,0; /*入口位置 */ CellType exit = 9,5; /*出口位置 */ int h = 6,w = 10; /* 迷宫的高与宽 */ mazeSolution(maze,w,h

5、,entry,exit); /求解迷宫return 0; /= void mazeSolution(MazeCellStatus mazeW,int w,int h, CellType entry,CellType exit) MazePathType mazePath; mazePath.length = 0; /*迷宫路线初始长度为0*/ /* 将入口存入路径,作为路径的起始点*/ mazePath.pathmazePath.length.x = entry.x; mazePath.pathmazePath.length.y = entry.y; mazePath.length +; /路

6、径长自增1 trySolution(maze,w,h,exit,entry,mazePath); / 用递归求解迷宫问题 void trySolution(MazeCellStatus mazeW,int w,int h,CellType exit, CellType cur,MazePathType mazePath) int i; /试探求解下一位置int xShift4 = 0,0,-1,1; /相邻位置相对于当前位置的x 坐标int yShift4 = -1,1,0,0; /相邻位置相对于当前位置的y 坐标CellType adjCell; /当前位置的相邻位置if(cur.x = e

7、xit.x & cur.y = exit.y) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - /已达到出口,输出解outSolution(mazePath); else for(i = 0; i = 0 & adjCell.y = 0 & adjCell.x w & adjCell.y h & (mazeadjCell.yadjCell.x = EMPTY) /相邻位置在迷宫内,并且为空白/将相邻位置存入路径中mazePath

8、.pathmazePath.length.x = adjCell.x; mazePath.pathmazePath.length.y = adjCell.y; mazePath.length +; /路径长自增1 mazeadjCell.yadjCell.x = VIA; /经过相邻位置/对相邻位置进行递归trySolution(maze,w,h,exit,adjCell,mazePath); /*从路径中去掉adjCell,路径长度将自减1*/ mazePath.length -; /*恢复相邻位置为空白,回溯*/ mazeadjCell.yadjCell.x = EMPTY; void o

9、utSolution(MazePathType mazePath) /输出迷宫的解static int num = 0; int i; printf( 第%d 条路径: /n,+ num); /num 为当前以求得解得个数for(i = 0; i mazePath.length; i +) printf(%d,%d),mazePath.pathi.x,mazePath.pathi.y); if(i + 1)%5 = 0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - printf(/n); printf(/n/n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁