求教
在魔方风靡全球之后,Rubik先生发明了它的简化版--魔板,如图1所示, 魔板由8个同样大小的方块组成,每个方块的颜色均不相同,本题中以数字1-8
分别表示,可能出现在魔板的任一位置,任一时刻魔板的状态可以用方块的颜色序
列表示:从魔板的左上角开始,按顺时针方向依次写下各方块的颜色代号,得到的
数字序列即可表示此时魔板的状态。例如,序列(1,2,3,4,5,6,7,8)表示图1所示
魔板的状态,这也就是题中魔板的初始状态。
对于魔板,可以施加三种不同的操作,分别以A,B,C标识。具体操作方
法如下:
A:上下行互换;
B:第一行同时循环右移一格;
C:中间4个方块顺时针旋转一格;
应用这三种基本操作,可以由任一状态达到任意另一状态。
图一 操作A 操作B 操作C
1 2 3 4 8 7 6 5 4 1 2 3 1 7 2 4
8 7 6 5 1 2 3 4 5 8 7 6 8 6 3 5
要求:
1。请编一程序,对于输入的一个目标状态,寻找一种操作的序列,使得从初始状
态开始,经过此操作序无后使该魔板变为目标状态。
2。20次操作内无此状态,报告出错信息
3。能实现单步运行,每一步产生一幅魔板图,一验证找到的序列。
简析:
算法: 双向搜索
数据结构: 数组
题型: II 型
难度: 6 分
编程时间: 90分钟
简述: 用动态内存可存下所有的8! 种状态,双向搜索可加快运行速度,也
可用构
造的方法。