有关七巧板复原的算法初步探讨
按:家里面有个七巧板,自从拿出来之后,就再也没能复原,尝试了好几次,都失败。 后来想想能不能用程序试试呢。初步思路
1.七巧板表示法
由于积木不是简单矩形的组合,因此它的表示方法比较麻烦。表示不清楚,或者表示方法很麻烦,会影响后续的算法。
不如先处理矩形组合的,用简单的图形进行算法的尝试,因为比较算法是更重要一下。矩形组合就可以用数组(矩阵)表示。(忽然想到不是矩形组合的也可以用数组表示)
2、容器表示法
容器初始一般为矩形 , 这个表示方法很简单。但随着进程的推进,其剩余空间就比较复杂了。其表示方法最终和部件表示方法一致。
3、算法
总体思路:
算法肯定要用到回溯和递归,这个是核心。具体要涉及积木的旋转和反转算法。
最简单的思路如下:
1、建立部件数组
2、进入回溯递归过程
顺序取部件
进入旋转组合操作,如果能放下,则继续取下一个
不能放下,旋转
全部旋转结束继续取下一个
不能发现,回溯,取下一个。
直到部件库为空(堆栈为空)就找到了一个算法
摆放算法总体思路
第一步查找起始点,然后按照在剩余空间内摆放部件;
第二步:边沿匹配算法(这个需要单独讨论),成功则继续
第三步:旋转和反转后再回到一
利用图片表示部件
这个就比较符合实际情况了,最佳的方法是拍照。这个得需要在前面基础上完成,更多的工作是数据的转换算法,大约属于图形学范畴了。是另外一个领域了。
暂时记下这么多,思路需要继续整理。
maraSun 2022-03-16 BJFWDQ
有关七巧板复原的算法初步探讨相关推荐
- java五子棋的重要算法讲解_[Java五子棋小游戏-Ai算法精讲以及实现]-02--高级算法初步...
高级算法初步 走对自己利益最大的路 它有难了不要慌,抛弃它,以这盘棋局的胜利为他报仇 碰撞检测与跨步算法原理图 反向计算权重 每次计算完权重,都要进行一次反向权重计算 权重值 : 两侧的权重值相加 权 ...
- 【原创】tarjan算法初步(强连通子图缩点)
[原创]tarjan算法初步(强连通子图缩点) tarjan算法的思路不是一般的绕!!(不过既然是求强连通子图这样的回路也就可以稍微原谅了..) 但是研究tarjan之前总得知道强连通分量是什么吧.. ...
- 在英语课堂中培养学生音素觉知的初步探讨(Phonemic Awareness)
From: http://blog.sina.com.cn/s/blog_4e8bd3550100c3kk.html Phonemic Awareness (2008-11-14 20:17:04)转 ...
- 【PAT】第四章 算法初步
第四章 算法初步 目录 第四章 算法初步 4.1 排序 4.1.1 选择排序 4.1.2 插入排序 4.1.3 排序题与sort函数的应用 strcmp 计算排名 4.2 散列 4.2.1 散列 1. ...
- 算法(一) 算法初步
算法(一) 算法初步 1. 十进制转为二进制(除二取余法) 简单的求值方法: 给出一个数字x,求x十进制各位相加的和 (将它转化为二进制呢?) temp=1; while(x>0){ ans+= ...
- 字符集问题的初步探讨
字符集问题的初步探讨 Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库 ...
- 动态规划算法初步(6)——0/1 背包
动态规划算法初步(6) 例题五:0/1 背包(背包型) 题目: 一个旅行者有一个最多能装m公斤物品的背包,现在有n件物品,它们的重量分别是w1,w2,-,wn,它们的价值分别为c1,c2,-,cn.若 ...
- 算法初步 计算机程序,算法初步-程序框图
算法初步-程序框图 (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 1. 1. 2程序槌0B簿二.三课町一. 教学目标:1. 知识与技 ...
- 高中数学必修3知识点总结归纳:第一章算法初步
大家好,今天分享高中数学必修3知识点总结归纳第一章算法初步,也是高中数学教学的重要内容.老师为大家整理的高中数学必修3算法初步知识点总结归纳,一起来看看吧. 好了,今天高中数学必修3知识点总结归纳第一 ...
最新文章
- R语言时间序列(time series)分析实战:霍尔特指数Holt‘s平滑法预测
- 人工智能的2020:泡沫破灭?还是最后的狂欢?
- 全球与中国机器人即服务市场领航调研与投资战略规划分析报告2022-2028年
- 【VBA】多条件去重
- UIView转UIimage
- html 获取鼠标在canvas上的坐标,html5-canvas 检测鼠标在画布上的位置
- 关于redis的持久化
- Nginx跨域解决配置示例
- makefile从无到有
- Go黑魔法之cgo reflect访问list存储C指针
- 【UML】聊聊系统建模
- 基于人工神经网络的识别Matlab,基于人工神经网络的汽车牌照识别MATLAB实现
- u3d学习:helloworld
- Android 彻底杀死当前进程
- UDS-统一诊断服务
- Android M应用启动流程分析
- 九零后看什么网络电视
- 购买计算机配置总结,买电脑主要看什么 教你怎么看电脑配置信息
- Excel 去重内部原理知识点详解
- linux安装ncurses教程,Ubuntu 安装 Ncurses
热门文章
- Freedom and discipline
- python 老师和父亲_强烈推荐给老师和父母的21部电影
- keil 报错解决 Loading PDSC Debug Description failed forSTMicroelectronics STM32xxxx
- kaldi中hashlist阅读总结
- java 静态区在jvm哪里,JDKJREJVM这三者的联系与区别///java跨平台///堆栈常量区静态区...
- Kitty猫基因编码
- 曾经爱过你试听,歌曲曾经爱过你mp3下载,歌词 - 郑源
- 使用集集快速添加公众号预约功能
- ruoyi是怎么点击菜单跳转页面的_5分钟添加公众号报名功能: 点击公众号菜单报名...
- 设计一个十进制纯机械乘法器,继续大数乘法