回 帖 发 新 帖 刷新版面

主题:VB问题求助

九宫图的算法

就是 随机产生一个排列方式,例如4 5 6    要求能自动排成1 2 3
                               1 2 3                  4 5 6 
                               8 7                    7 8

回复列表 (共7个回复)

沙发

你随即产生的也是有序表么?是3个有序表?
如果是的话你只需笔出哪个大就可以了!方法把每个表的数值加起来,然后比较!小的放在第一行,大的放在第二行。

板凳

我的随机程序,不是有序表,要用广度或深度遍历的
        Dim a(7) As Integer
        Dim i, j As Integer
        a(0) = Rnd * 7 + 1
        For i = 1 To 7
            a(i) = Rnd * 7 + 1
            For j = 0 To i - 1
                If a(i) = a(j) Then
                    i = i - 1
                    Exit For
                End If
            Next
        Next
        For i = 0 To 7
        cmd1(i).Caption = a(i)
        Next

3 楼

跪求哪位大侠帮帮忙
小人是初学者,但急于做出来~~~~先谢过了

4 楼

移动过程也要写出来的,这个问题好难的

5 楼

关注~~

6 楼

给个思路吧,做出来要花点时间。。。

打开开始=》程序=》附件=》计算器,按9,再按n!计算得到362880,这就是问题的规模,不是很大。

粗糙的搜索算法,对于每一种九宫图布局用一个状态结点表示

如:

struct _state{
   char pos[9];
   char empt;
};

对于整个状态用一个hash表存储,hash链长可以取10000,冲突就拉链。

搜索算法开始时从输入得到初始状态,每得到一个状态就看它是否存在于表中,如果存在就放充搜索,否则存入hash表,再对它进行4个方向上的延伸,再到新的状态,重复操作,直到得到的状态为目标状态。

7 楼

首先多谢您给的思路。
不过小弟我想了两天还是不会,比较笨
能否写点代码给我参考下,在此先谢过了

我来回复

您尚未登录,请登录后再回复。点此登录或注册