9*9八数码问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 10:15:44
9*9的方阵从1至80随机排列,右下角为空,通过移动数字位置使之成为1,2,3,……80右下角还为空的方阵。求一C语言程序。
任何方法都行只要做出来

并不是,所有的排列都可以,排出来的,我只知道思想:
1,把这个n*n的方框先排最上一行和最左一列,剩下就是(n-1)*(n-1).重复这一步直到n=2;
2,如果,排最后三个,如果能排好,显示结果,排不好,就说不可以排

很难的,我当年做过3*3的,没敢用递归,但还是只做到了20步以内.

算法原理是按层次生成搜索树

如果只是随便求一个移动的方法,而不是步数最少的移动方法,倒是有办法。只需把方块从上到下从左到右放到正确的位置就好了,每行最后一个放入时有点技巧而已。
要先检查逆序数,逆序数为奇数是无解的