【项目实践】二阶魔方搜索算法

前言

  课程《智能控制基础》课后作业要求编写一个二阶魔方搜素求解的算法,由于本人的代码水平真的不行,只能“面向互联网编程”,前前后后找了不少资料,也确实学习到一点东西,记录一下。

参考链接

正文

  利用搜索算法求解二阶魔方的关键点主要有两个:魔方状态编码搜索算法的编写
  先说第一个,魔方状态编码,关于这个不同的人有不同的方式,但是就我找到的资料来看,比较常用的都是使用一个24位的字符串来编码,一听到24,基本就是讨论魔方展开时的状态了。
  首先,我们先规定一个魔方拿在手上的位置,如下图所示,并约定好展开方式,这样就可以得到24个面,如下图所示。
在这里插入图片描述
在这里插入图片描述
  因此,每次解决一个魔方时,输入的当前魔方的状态都是手动按照约定的规则来转换的一个24位的字符串或者24个数字,(这也是这种方法不太方便的一个点)

  确定了状态的编码方式,接下来就是旋转操作函数的编写了,这里我们约定只进行三种方向的旋转:右、上、前,然后每一种转动方向又有三种角度选择:顺时针90°、逆时针90°、180°,故每一种状态下都对应着9种操作,相当于是带有9个杈的树状结构。
  说完结构,再说说代码编写方式:先按照你自己设定的方位,然后看转动一次之后哪些数字发生了移动,然后交换对应的数字即可,难度不大。
  底层操作函数写完之后,下面就是顶层的搜索算法了,关于这个算法,似乎很多采用的都是广度优先搜索(BFS),这个算法没什么理解难度,关键是熟练使用队列、树等基本数据结构,这里就不再介绍了,建议直接参考上文参考链接。

感想与收获

  这次的作业让我意识到只掌握C语言是不够,至少还要掌握一门面向对象的语言,如C++或者Python,真的很重要!而且基本数据结构也必须掌握。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录无知岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值