简单迷宫,字符化输出

效果图

#include <stdio.h>
#include <stdlib.h>
#define M 8
#define N 8
#define TRUE 1
#define FALSE 0typedef int bool;
typedef struct{     // 方位数据结构int incX, incY;
} Direction;typedef struct{int x, y;   // 当前位置坐标int di;     // 当前方位
} Box, ElemType;          // 栈中元素typedef struct StackNode{   // 栈ElemType data;struct StackNode *next;
} StackNode, *LinkStack;
bool Push(LinkStack S, ElemType e){LinkStack p=(LinkStack)malloc(sizeof(StackNode));p->data=e;p->next=S->next;S->next=p;return 1;
}
bool Pop(LinkStack S, ElemType *e){if(S==NULL) return -1;*e=S->next->data;LinkStack p=S->next;S->next=S->next->next;free(p);return 1;
}void Traverse(LinkStack S, int graph[M+2][N+2]){int x, y;ElemType p; while(S->next!=NULL){Pop(S, &p);        graph[p.x][p.y]=-2;    // 标记路径}for(x=0; x<M+2; x++){    // 字符输出for(y=0; y<N+2; y++){if(graph[x][y]==-2)printf("%2c", 'O');else if(graph[x][y]==1)printf("%2c", '-');else printf("%2c", ' ');}printf("\n");}
}bool findPath(int maze[M+2][N+2], Direction direct[], LinkStack S){Box temp;int x, y, di;   // 迷宫格子当前处理单元的横纵坐标和方向int line, col;  // 迷宫数组下一单元的行坐标和列坐标maze[1][1]=-1;temp.x=1; temp.y=1; temp.di=-1;Push(S, temp);while(S->next!=NULL){Pop(S, &temp);x=temp.x; y=temp.y; di=temp.di+1;while(di<4){    // 方向未尝试完// printf("%d %d %d\n", x, y, di);line=x+direct[di].incX;col=y+direct[di].incY;if(maze[line][col]==0){temp.x=x; temp.y=y; temp.di=di;Push(S, temp);x=line; y=col; maze[line][col]=-1;if(x==M&&y==N) return TRUE;     // 发现出口 else di=0;}else di++;}}return FALSE;
}int main(){int maze[M+2][N+2] = {   // 1-障碍{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },{ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 },{ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 },{ 1, 0, 0, 0, 0, 1, 1, 0, 0, 1 },{ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 },{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },{ 1, 0, 1, 0, 0, 0, 1, 0, 0, 1 },{ 1, 0, 1, 1, 1, 0, 1, 1, 0, 1 },{ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1 },{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }};Direction direct[4] = {  // 四个方向{  0, 1 },   // right{  1, 0 },  // down{  0,-1 },   // left{ -1, 0 }    // up};LinkStack S=(LinkStack)malloc(sizeof(StackNode));S->next=NULL;int rst=findPath(maze, direct, S);   // 寻径Traverse(S, maze);free(S);return 0;
}

参照:B栈懒猫老师

https://www.bilibili.com/video/BV1oE41177wk

简单迷宫,字符化输出相关推荐

  1. JAVA中BigDecimal的字符化输出

    BigDecimal是处理高精度的浮点数运算的常用的一个类 当需要将BigDecimal中保存的浮点数值打印出来,特别是在页面上显示的时候,就有可能遇到预想之外的科学技术法表示的问题. 一般直接使用 ...

  2. Java学习之编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符。

    案例介绍: 编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符. 加密规则:输入A,输出Z;输入B,输出Y:输入a,输出z;输入b,输出y. 案例代码: import java.io.* ...

  3. 20行Python代码实现视频字符化

    来源 | ZackSock(ID:ZackSock) 我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来. 看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触 ...

  4. Python20行代码实现视频字符化

    Python20行代码实现视频字符化 我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来.看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触opencv模块, ...

  5. opencv画框返回坐标 python_20行Python代码实现视频字符化

    来源 | ZackSock(ID:ZackSock) 我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来. 看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触 ...

  6. 视频灰度处理python_20行Python代码实现视频字符化

    来源 |ZackSock(ID:ZackSock) 我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来. 看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触o ...

  7. python 字符视频_Python20行代码实现视频字符化

    Python20行代码实现视频字符化 我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来.看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触opencv模块, ...

  8. python 制作字符视频_20行Python代码实现视频字符化功能

    我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来.看起来是非常高端,但是实际实现起来确是非常简单,我们只需要接触opencv模块,就能很快的实现视频字符化.但是在此之前 ...

  9. RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置

    RL之Q Learning:利用强化学习之Q Learning实现走迷宫-训练智能体走到迷宫(简单迷宫)的宝藏位置 目录 输出结果 设计思路 实现代码 测试记录全过程 输出结果 设计思路 实现代码 f ...

最新文章

  1. 关键路径最早最迟开始时间
  2. [C# 网络编程系列]专题四:自定义Web浏览器
  3. 《JavaScript 闯关记》之函数
  4. InputFormat和OutPutFormat
  5. thinkPHP的Excel插件
  6. 根据on,获取选中的元素
  7. mysql语句中多表查询_6.MySql中的SQL语句(五):多表查询
  8. sql替换字符串中的部分字符
  9. firebug下载时出现there was an error loading firebug
  10. 详解安全测试工具:SAST、DAST、IAST、SCA的异同
  11. 2021年 阿里云商标注册申请的相关详情及分类介绍
  12. MPU6050初始化失败原因及常见问题解决方法
  13. 让Ipad买前爱奇艺买后生产力——浏览器编程之Projector运行Idea(超详细)
  14. Ubuntu20.04 添加打印机
  15. 转李承鹏的《恰恰》,这次一定要顶他
  16. switch()函数 ----by xhxh
  17. MATLAB算法实战应用案例精讲-【图像处理】小目标检测(补充篇)(附python代码实现)
  18. python入门ppt下载_Python3入门ppt
  19. 小学生python游戏编程arcade----excel调用
  20. java为什么有基本类型_你了解Java数据类型吗?

热门文章

  1. Vintage表的写法(sql/python)
  2. 风雨砥砺,岁月如歌—浅析“JOSN”
  3. 乘船问题(贪心算法)
  4. 埃博拉与现代微生物战争
  5. 宝鲲财经:外汇操作技巧浅析
  6. 创维G60 显示器参数 创维G60 显示器 评测怎么样
  7. 前端学习第三弹:利用div+css制作个人简历
  8. NSVisualEffectView (SwiftUI 中文文档手册 教程含源码)
  9. Python37 安装pip
  10. GIOU翻译加自己的理解