主题:VB问题求助
black001
[专家分:0] 发布于 2006-04-03 09:57:00
九宫图的算法
就是 随机产生一个排列方式,例如4 5 6 要求能自动排成1 2 3
1 2 3 4 5 6
8 7 7 8
回复列表 (共7个回复)
沙发
linxuanxu [专家分:9360] 发布于 2006-04-03 10:45:00
你随即产生的也是有序表么?是3个有序表?
如果是的话你只需笔出哪个大就可以了!方法把每个表的数值加起来,然后比较!小的放在第一行,大的放在第二行。
板凳
black001 [专家分:0] 发布于 2006-04-03 11:02:00
我的随机程序,不是有序表,要用广度或深度遍历的
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 楼
black001 [专家分:0] 发布于 2006-04-03 16:19:00
跪求哪位大侠帮帮忙
小人是初学者,但急于做出来~~~~先谢过了
4 楼
Tokyson [专家分:90] 发布于 2006-04-03 18:09:00
移动过程也要写出来的,这个问题好难的
5 楼
rickone [专家分:15390] 发布于 2006-04-03 20:09:00
关注~~
6 楼
rickone [专家分:15390] 发布于 2006-04-03 21:04:00
给个思路吧,做出来要花点时间。。。
打开开始=》程序=》附件=》计算器,按9,再按n!计算得到362880,这就是问题的规模,不是很大。
粗糙的搜索算法,对于每一种九宫图布局用一个状态结点表示
如:
struct _state{
char pos[9];
char empt;
};
对于整个状态用一个hash表存储,hash链长可以取10000,冲突就拉链。
搜索算法开始时从输入得到初始状态,每得到一个状态就看它是否存在于表中,如果存在就放充搜索,否则存入hash表,再对它进行4个方向上的延伸,再到新的状态,重复操作,直到得到的状态为目标状态。
7 楼
black001 [专家分:0] 发布于 2006-04-05 08:36:00
首先多谢您给的思路。
不过小弟我想了两天还是不会,比较笨
能否写点代码给我参考下,在此先谢过了
我来回复