我有不同的数字,需要通过将每个数字换成0来按升序排序。
结果编号只能通过用0交换每个数字来获得。
例如,我有3x3矩阵,
3 4 1
2 5 0
6 8 7
在上面的矩阵中,数字应该用0交换以升序。从上面看,在第一步中只有5,7和1与0交换。最终输出应该是这样的
1 2 3
4 5 6
7 8 0
实现这一目标的最佳解决方案是什么。
由于
答案 0 :(得分:3)
这是着名的 15-puzzle 的简单版本。
解决此类问题的一般方法是将其建模为状态图,并运行shortest-path算法以查找从源(给定板)到目标(已分类的板)。
状态图是G=(V,E)
,其中:V= { all possible boards }
和E = {(u,v)|可以通过单次交换来改变你对你的看法。“。
您可以运行BFS或bi-directional BFS(因为您有一个来源和一个目标),甚至可以A* Algorithm使用适当的可允许启发式功能来查找状态图上的路径,这代表了一系列产生解决方案的互换。