算法实战——行编辑器
? 在计算机最初,没有很强大的编辑器,当时只有行编辑器 。行编辑器如何使用呢?
? 用户从终端输入的程序或数据,并将最后结果显示到屏幕上 。由于用户输入时,不能保证不出差错,因此,若在编辑程序中,每接受一个字符即输出到屏幕上的做法显然不恰当 。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后一次性将其显示到屏幕上 。允许用户输入出错并及时改正 。
? 以#表示退格,删除上一个字符 。以@表示退行,删除一整行 。看几个简单的例子:
输入:abc#dd输出:abdd输入:abc@dd输出: dd输入:a#b#d#ce输出:ce输入:ab##dce输出:dce
? 我们通过栈,可以很简单的实现这种编辑器 。具体代码如下:
// 行编辑器的输入public static String input(String source) {YKDStack
算法实战——简单寻路算法
自动寻路
? 在实际游戏场景中,地图是非常复杂的,但是无论什么地图,自动寻路都可以简化为 3 要素:可移动区域,不可移动区域,起点和终点 。
? 如果我把地图划分为多个方格,每个方格表示移动的最小单位,我们便能将整个地图投影成如下二维视觉:
? 深灰色的区块为障碍物,白色区块表示可行动的区域,图中分别标注了起点和终点 。
? 假设,现在每一步都只能从一个方格移动到其相邻的方格,并且只能上下左右移动,那么如何找寻现一条从起点移动到终点路径呢?
思路
? 首先我们分析一下我们遇到的问题:
如何存储整个地图信息,包括障碍物,可移动区域?如何存储寻找自动寻路路径? 地图信息
? 对于这样的二维地图,我们可以用二维数组进行存储,同时因为每个方格都有不同的状态,为了方便显示,我们可以利用字符存储每个方格信息 。
用#表示障碍物,空格表示可移动区域 。
代码如下:
char[][] map = {{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},{'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#'},{'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#'},{'#', ' ', ' ', ' ', ' ', '#', '#', ' ', ' ', '#'},{'#', ' ', '#', '#', '#', ' ', ' ', ' ', ' ', '#'},{'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'},{'#', ' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#'},{'#', ' ', '#', '#', '#', ' ', '#', '#', ' ', '#'},{'#', '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}};
- OpenCV.箱式滤波
- 性别个性化在淘宝搜索中的应用
- Ubuntu使用Systemback进行系统的备份还原
- X64-R3层通过PEB获取进程命令行参数
- Hosts的作用
- 电脑小技巧系列——私密文件的保护措施
- Java 压缩20M文件从30秒到1秒的优化过程,还不相信?
- JSON 数据格式详解
- Android 12 还没用上,Android 13 已经来了
- VMWARE15