七巧板复原算法之三——摆放算法
假设我们已经进行了一定的步骤,此时七巧板的摆放情况如下图示:
红色部分已经完成摆放的区域,蓝色部分是空的区域,分别用G1和G2表示。根据我们的人工摆放方法,可以得到摆放方法如下:
1)定位初始顶点和初始边
按照从左到右,从上到下的顺序在G2上进行查找,找到第一个遇到的顶点, 从该顶点开始的边即为初始边(图上的顺时针方向)。
2)确定摆放部件
在部件库中(堆栈)查找顺序查找剩余部件,确定初始点和初始边, 并对其进行平移和旋转,使其可以贴合(点和边重合)在1)中的的定位点和初始边上,同时满足下面的要求: 该部件的所有顶点在G2内; 如果找不到,将其放回部件库中,查找下一个,符合要求后完成一个摆放;
3)动态调整G1和G2
根据摆放后的结果,对G1和G2 分别进行调整,调整后再回到1)。
特殊情况的说明:
如图示:
摆放之后,可能出现这种情况,就是图中的G3的区域,这是个空区域。摆放后,在满足上面的摆放条件之后,要查找这种区域。查找方法如下:
摆放的部件的非相邻顶点出现在G1上,就会出现这种“空腔”, 记录该点;从摆放部件的初始边的末点开始顺序到该点的点的集合 P2 以及 在G1上从初始点开始逆序到该点的点的集合P1 , P1和P2 构成G3。
确定G3之后, 对G3按照上面的方法继续摆放。
maraSun 2022-03-21 BJFWDQ
按:东航MU5735 航班可能在广西藤县发生事故,向遇难者表示哀悼…
七巧板复原算法之三——摆放算法相关推荐
- 五大算法之三--贪心算法
一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的 ...
- python贪心算法最短路径_dijkstra算法(贪心算法)——解决最短路径问题
最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...
- 有关七巧板复原的算法初步探讨
按:家里面有个七巧板,自从拿出来之后,就再也没能复原,尝试了好几次,都失败. 后来想想能不能用程序试试呢.初步思路 1.七巧板表示法 由于积木不是简单矩形的组合,因此它的表示方法比较麻烦.表示不清楚, ...
- CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现
CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CR ...
- 最大流算法之三:ISAP
最大流算法之三:ISAP <转> (2009-08-14 19:24:27) 转载▼ 标签: it 分类: 理论 通常的 SAP 类算法在寻找增广路时总要先进行 BFS,BFS 的最坏情况 ...
- 五大常用算法之三:贪心算法
一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的算法框架,算法设计的关键 ...
- 数据结构与算法之三直接插入排序
直接插入排序的基本思想是指定输入数据的个数,从键盘输入给数组a[],从数组中第2个数a[1]与第1个数a[0]开始比较起,如果第2个数a[1]比第1个数a[0]小,则把第2个数a[1]赋给一个临时变量 ...
- 程序员都会的五大算法之三(贪心算法),恶补恶补恶补!!!
前言 点击查看算法介绍 五大算法 分治算法 动态规划 贪心算法 回溯算法 分支限界算法 WX搜素"Java长征记"对这些算法也有详细介绍. 贪心算法 一.算法概述 贪心算法也叫贪婪 ...
- 【JVM进阶之路】垃圾回收机制和GC算法之三色标记(三)
JVM往期文章 [JVM进阶之路]内存结构(一) [JVM进阶之路]玩转JVM中的对象(二) 上篇文章中讲到JVM中的对象以及判断对象的存活,那么对于"已死"的对象应该如何处理,怎 ...
最新文章
- hdu 5438 Ponds 拓扑排序
- bootstrap validator 出现Maximum call stack size exceeded
- 截屏没有了_原来华为手机的截屏方法不止3种,用了这么久,现在才知道新玩法?...
- 200905阶段一C++链表与继承特性
- utf-8编码的字符串转成unicode(ucs-4)编码的字符串
- mysql不能创建innodb类型表_MYSQL have_innodb DISABLED无法创建innodb类型的表
- log4net日志文件的应用
- Java DataOutputStream writeByte()方法与示例
- 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...
- Android API 中文 (54) —— Filterable
- OpenDDS项目练习指南
- java 4.0 下载_javax.servlet-api-4.0.1.jar包下载
- 走进脑计划(四):linux下安装SPM、DPABI
- Android-图片压缩
- IPFS时代来临,FIL WORLD重赋存储灵魂
- 软件推荐:16个你还没用过的优秀软件(多个类别)
- HDU 6608 Fansblog——————大素数检测
- 数据库基本概念、DBMS、DBS
- C# 得到变量的类型
- 浅析CV下的无人驾驶技术