Java实现自动扫雷AI

0.工程源码 https://github.com/Raytto/AIforMinesweeper 由于是几年前写着玩的,代码质量比较一般。但思路和运行效果个人认为还是可以的。 1.说明 整体逻辑结构如下图。 实现了全自动玩扫雷的目的,可以主要分为三步: 识别屏幕中的扫雷窗口和游戏当前的信息(如格子矩阵大小、每个格子中的数字、旗子、还是未开状态)。 策略计算,或者找到一个一定是雷的格子,或者找到一个一定非雷的格子,或者在完全无法确定任意格子时停止。 控制鼠标将一定是雷的格子查旗,或者将一定非雷的格子点开。 经过测试,可以快速完成大部分局,但有少量的情况下确实无法确定,需要靠猜 比如上图,左下角的两个格子一定有一个格子是雷,但我们完全无法确定是哪个格子。 如果全图都只剩下这种需要猜的情况时,脚本就会停下。当然,你也可以修改脚本,让它去猜。 下面从游戏识别、策略计算、控制鼠标操作三块进行说明 2.游戏识别 …

全文Java实现自动扫雷AI

B树算法解析

主要梳理一下B树的插入和删除的方法和原理。 1. B树简介 又称多路平衡排序树 B树需要满足几个要求 节点的最多子树数量为B树的阶,通常用m表示 对每个节点,子树数量 = 关键字数量 – 1 每个节点至多有 m 棵子树,节点内的排列为 …

全文B树算法解析

二叉树遍历和用遍历结果确定二叉树

1.前序遍历 定义 对任意子树,优先访问根节点,再左子树,再右子树。 遍历 遍历时需使用栈保存根节点,用以未来访问右子树使用。 特征 第一个为整棵树的根 最后访问一定为叶节点。 2.中序遍历 定义:对任意子树,优先访问左子树,再访问根节点,再访问右子树。 遍历:遍历时需要使用栈保存根节点,用以未来访问根节点和右子树使用。 特征 中序遍历结果正好是将整棵树“压扁”之后得到的序列,所以也可以依据中序序列容易地对树进行切割划分。 第一为最左的节点 …

全文二叉树遍历和用遍历结果确定二叉树

数据结构重点-学习笔记

1. 基本概念 数据的逻辑结构 与存储无关的数据逻辑关系,仅对外业务逻辑关心。 如线性结构、一般线性表(有序表)、栈、队列、树、有向图、集合等等 数据的存储结构 计算机中的表示或者映像,也称物理结构,业务逻辑不用关心,实现业务逻辑时才关心。 如顺序存储(和线性、有序区别开)、链式存储、索引存储、散列存储 数据的运算 针对逻辑结构定义的运算 算法特性 有穷、确定、可行 原地工作法 算法需要的额外空间是常量 …

全文数据结构重点-学习笔记

红黑树C语言实现

1. 红黑树理解和推导详见 2. C语言代码 由于加了不少代码用于打印树和增改中的Log,所以整体会略长。 3. 测试运行结果 相关文章 KMP理解推导与C语言实现 红黑树理解和推导 计算机网络(4):网络层-考研笔记 数据结构重点-学习笔记 二叉树遍历和用遍历结果确定二叉树 B树算法解析 …

全文红黑树C语言实现

红黑树理解和推导

由于红黑树算法中情形比较多且杂,不适合强背。这里尝试用遇见问题解决问题的思路推导出算法,帮助理解,也帮助在遗忘时能有思路自己推导出遗忘的部分。