8拼图是15Puzzle(或滑动拼图)的较小变体。您有一个3x3
网格,其中填充了以随机顺序排列的0-8(0表示空白图块)中的数字。您的任务是输入一个3x3的网格并显示最短的解决方案(最小移动量)以达到目标状态。显示每个板状态,包括输出中的第一个状态。
可能有多种最佳解决方案,您只需要打印一种即可。
输入:(小示例)
1 2 0
4 5 3
7 8 6
输出:
2 <- denotes minimum number of moves required
1 2 0
4 5 3
7 8 6
1 2 3
4 5 0
7 8 6
1 2 3
4 5 6
7 8 0 <- goal state
如果无法解决难题,请仅打印-1
(表示无法解决)
编辑:时间限制:<30秒。
对于不熟悉npuzzle的用户,请阅读提供的链接...
—
st0le 2011年
在你的问题,不应该
—
克莱德·罗伯
grid which is filled with numbers from 0-9
是grid which is filled with numbers from 0-8
?
@克莱德,糟糕!:)固定。
—
st0le 2011年
可以肯定总是有可能解决的,对吗?
—
魔术章鱼缸
@MagicOctopusUrn如果您使用滑动规则从“目标”状态到达初始状态,则始终可以解决。如果您随意放置磁贴,那么有些状态是无法解决的。Google解决n个难题的方法
—
st0le