按:家里面有个七巧板,自从拿出来之后,就再也没能复原,尝试了好几次,都失败。 后来想想能不能用程序试试呢。初步思路

1.七巧板表示法

由于积木不是简单矩形的组合,因此它的表示方法比较麻烦。表示不清楚,或者表示方法很麻烦,会影响后续的算法。
不如先处理矩形组合的,用简单的图形进行算法的尝试,因为比较算法是更重要一下。矩形组合就可以用数组(矩阵)表示。(忽然想到不是矩形组合的也可以用数组表示)

2、容器表示法

 容器初始一般为矩形 , 这个表示方法很简单。但随着进程的推进,其剩余空间就比较复杂了。其表示方法最终和部件表示方法一致。

3、算法

总体思路:

算法肯定要用到回溯和递归,这个是核心。具体要涉及积木的旋转和反转算法。
最简单的思路如下:
1、建立部件数组
2、进入回溯递归过程
顺序取部件
进入旋转组合操作,如果能放下,则继续取下一个
不能放下,旋转
全部旋转结束继续取下一个
不能发现,回溯,取下一个。
直到部件库为空(堆栈为空)就找到了一个算法

摆放算法总体思路

第一步查找起始点,然后按照在剩余空间内摆放部件;
第二步:边沿匹配算法(这个需要单独讨论),成功则继续
第三步:旋转和反转后再回到一

利用图片表示部件

 这个就比较符合实际情况了,最佳的方法是拍照。这个得需要在前面基础上完成,更多的工作是数据的转换算法,大约属于图形学范畴了。是另外一个领域了。

暂时记下这么多,思路需要继续整理。

maraSun 2022-03-16 BJFWDQ

有关七巧板复原的算法初步探讨相关推荐

  1. java五子棋的重要算法讲解_[Java五子棋小游戏-Ai算法精讲以及实现]-02--高级算法初步...

    高级算法初步 走对自己利益最大的路 它有难了不要慌,抛弃它,以这盘棋局的胜利为他报仇 碰撞检测与跨步算法原理图 反向计算权重 每次计算完权重,都要进行一次反向权重计算 权重值 : 两侧的权重值相加 权 ...

  2. 【原创】tarjan算法初步(强连通子图缩点)

    [原创]tarjan算法初步(强连通子图缩点) tarjan算法的思路不是一般的绕!!(不过既然是求强连通子图这样的回路也就可以稍微原谅了..) 但是研究tarjan之前总得知道强连通分量是什么吧.. ...

  3. 在英语课堂中培养学生音素觉知的初步探讨(Phonemic Awareness)

    From: http://blog.sina.com.cn/s/blog_4e8bd3550100c3kk.html Phonemic Awareness (2008-11-14 20:17:04)转 ...

  4. 【PAT】第四章 算法初步

    第四章 算法初步 目录 第四章 算法初步 4.1 排序 4.1.1 选择排序 4.1.2 插入排序 4.1.3 排序题与sort函数的应用 strcmp 计算排名 4.2 散列 4.2.1 散列 1. ...

  5. 算法(一) 算法初步

    算法(一) 算法初步 1. 十进制转为二进制(除二取余法) 简单的求值方法: 给出一个数字x,求x十进制各位相加的和 (将它转化为二进制呢?) temp=1; while(x>0){ ans+= ...

  6. 字符集问题的初步探讨

    字符集问题的初步探讨 Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库 ...

  7. 动态规划算法初步(6)——0/1 背包

    动态规划算法初步(6) 例题五:0/1 背包(背包型) 题目: 一个旅行者有一个最多能装m公斤物品的背包,现在有n件物品,它们的重量分别是w1,w2,-,wn,它们的价值分别为c1,c2,-,cn.若 ...

  8. 算法初步 计算机程序,算法初步-程序框图

    算法初步-程序框图 (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 1. 1. 2程序槌0B簿二.三课町一. 教学目标:1. 知识与技 ...

  9. 高中数学必修3知识点总结归纳:第一章算法初步

    大家好,今天分享高中数学必修3知识点总结归纳第一章算法初步,也是高中数学教学的重要内容.老师为大家整理的高中数学必修3算法初步知识点总结归纳,一起来看看吧. 好了,今天高中数学必修3知识点总结归纳第一 ...

最新文章

  1. R语言时间序列(time series)分析实战:霍尔特指数Holt‘s平滑法预测
  2. 人工智能的2020:泡沫破灭?还是最后的狂欢?
  3. 全球与中国机器人即服务市场领航调研与投资战略规划分析报告2022-2028年
  4. 【VBA】多条件去重
  5. UIView转UIimage
  6. html 获取鼠标在canvas上的坐标,html5-canvas 检测鼠标在画布上的位置
  7. 关于redis的持久化
  8. Nginx跨域解决配置示例
  9. makefile从无到有
  10. Go黑魔法之cgo reflect访问list存储C指针
  11. 【UML】聊聊系统建模
  12. 基于人工神经网络的识别Matlab,基于人工神经网络的汽车牌照识别MATLAB实现
  13. u3d学习:helloworld
  14. Android 彻底杀死当前进程
  15. UDS-统一诊断服务
  16. Android M应用启动流程分析
  17. 九零后看什么网络电视
  18. 购买计算机配置总结,买电脑主要看什么 教你怎么看电脑配置信息
  19. Excel 去重内部原理知识点详解
  20. linux安装ncurses教程,Ubuntu 安装 Ncurses

热门文章

  1. Freedom and discipline
  2. python 老师和父亲_强烈推荐给老师和父母的21部电影
  3. keil 报错解决 Loading PDSC Debug Description failed forSTMicroelectronics STM32xxxx
  4. kaldi中hashlist阅读总结
  5. java 静态区在jvm哪里,JDKJREJVM这三者的联系与区别///java跨平台///堆栈常量区静态区...
  6. Kitty猫基因编码
  7. 曾经爱过你试听,歌曲曾经爱过你mp3下载,歌词 - 郑源
  8. 使用集集快速添加公众号预约功能
  9. ruoyi是怎么点击菜单跳转页面的_5分钟添加公众号报名功能: 点击公众号菜单报名...
  10. 设计一个十进制纯机械乘法器,继续大数乘法