假设我们已经进行了一定的步骤,此时七巧板的摆放情况如下图示:


红色部分已经完成摆放的区域,蓝色部分是空的区域,分别用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 航班可能在广西藤县发生事故,向遇难者表示哀悼…

七巧板复原算法之三——摆放算法相关推荐

  1. 五大算法之三--贪心算法

    一.基本概念:        所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.      贪心算法没有固定的 ...

  2. python贪心算法最短路径_dijkstra算法(贪心算法)——解决最短路径问题

    最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...

  3. 有关七巧板复原的算法初步探讨

    按:家里面有个七巧板,自从拿出来之后,就再也没能复原,尝试了好几次,都失败. 后来想想能不能用程序试试呢.初步思路 1.七巧板表示法 由于积木不是简单矩形的组合,因此它的表示方法比较麻烦.表示不清楚, ...

  4. CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现

    CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CR ...

  5. 最大流算法之三:ISAP

    最大流算法之三:ISAP <转> (2009-08-14 19:24:27) 转载▼ 标签: it 分类: 理论 通常的 SAP 类算法在寻找增广路时总要先进行 BFS,BFS 的最坏情况 ...

  6. 五大常用算法之三:贪心算法

    一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的算法框架,算法设计的关键 ...

  7. 数据结构与算法之三直接插入排序

    直接插入排序的基本思想是指定输入数据的个数,从键盘输入给数组a[],从数组中第2个数a[1]与第1个数a[0]开始比较起,如果第2个数a[1]比第1个数a[0]小,则把第2个数a[1]赋给一个临时变量 ...

  8. 程序员都会的五大算法之三(贪心算法),恶补恶补恶补!!!

    前言 点击查看算法介绍 五大算法 分治算法 动态规划 贪心算法 回溯算法 分支限界算法 WX搜素"Java长征记"对这些算法也有详细介绍. 贪心算法 一.算法概述 贪心算法也叫贪婪 ...

  9. 【JVM进阶之路】垃圾回收机制和GC算法之三色标记(三)

    JVM往期文章 [JVM进阶之路]内存结构(一) [JVM进阶之路]玩转JVM中的对象(二) 上篇文章中讲到JVM中的对象以及判断对象的存活,那么对于"已死"的对象应该如何处理,怎 ...

最新文章

  1. hdu 5438 Ponds 拓扑排序
  2. bootstrap validator 出现Maximum call stack size exceeded
  3. 截屏没有了_原来华为手机的截屏方法不止3种,用了这么久,现在才知道新玩法?...
  4. 200905阶段一C++链表与继承特性
  5. utf-8编码的字符串转成unicode(ucs-4)编码的字符串
  6. mysql不能创建innodb类型表_MYSQL have_innodb DISABLED无法创建innodb类型的表
  7. log4net日志文件的应用
  8. Java DataOutputStream writeByte()方法与示例
  9. 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...
  10. Android API 中文 (54) —— Filterable
  11. OpenDDS项目练习指南
  12. java 4.0 下载_javax.servlet-api-4.0.1.jar包下载
  13. 走进脑计划(四):linux下安装SPM、DPABI
  14. Android-图片压缩
  15. IPFS时代来临,FIL WORLD重赋存储灵魂
  16. 软件推荐:16个你还没用过的优秀软件(多个类别)
  17. HDU 6608 Fansblog——————大素数检测
  18. 数据库基本概念、DBMS、DBS
  19. C# 得到变量的类型
  20. 浅析CV下的无人驾驶技术

热门文章

  1. 去中心化借贷协议Trister’s Lend全面内测并提交合约代码安全审计
  2. 游戏服务器被ddos攻击怎么办,如何防御?
  3. [优化精髓]搜索引擎优化应该重视什么?
  4. Realsense D435i Yolov5目标检测实时获得目标三维位置信息
  5. 30招微信公众号运营案例
  6. MU-MIMO是什么
  7. C#之父——安德斯·海尔斯伯格
  8. 静电耳机与普通动圈或动铁耳机有什么区别
  9. python爬取百度贴吧的实例
  10. 红黑树的节点颜色是什么决定_为什么选择颜色可能是您最重要的品牌决定