作业帮 > 综合 > 作业

从1到6的6个数字排列组合

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/03/29 16:41:08
从1到6的6个数字排列组合
说明,每组数字必须由6个数组成,1和6不能相邻,同一个数字出现的次数最多3次,每组数字最少由3个数组成,同一个数不能连续出现2次以上.
举例:111234 121623 131211 232323以及少于6个数组成的都不可以
我学过几天FOXPRO知道要编个小程序,但是丢了好多年了,编不出来了,
13680种,EXCEL中用程序跑遍所有情况,剔除不符的.
EXCEL里,菜单——工具——宏——V…B…编辑器
在编辑器界面,菜单——插入——模块
在模块1里粘贴如下代码:
Sub Macro1()
Range("A1").Select
Dim i1,i2,i3,i4,i5,i6,n,k,p,q,flag
Dim tstr,nstr,dbstr
Dim tshuzu(7)
n = 0
For i1 = 1 To 6
For i2 = 1 To 6
For i3 = 1 To 6
For i4 = 1 To 6
For i5 = 1 To 6
For i6 = 1 To 6
tstr = i1 & i2 & i3 & i4 & i5 & i6
flag = 1
For k = 1 To 6
If InStr(tstr,11 * k) 0 Then
flag = 0
Exit For
End If
Next
If InStr(tstr,"16") 0 Or InStr(tstr,"61") 0 Then
flag = 0
End If
If flag = 1 Then
tshuzu(1) = i1
tshuzu(2) = i2
tshuzu(3) = i3
tshuzu(4) = i4
tshuzu(5) = i5
tshuzu(6) = i6
For p = 1 To 5
For q = p + 1 To 6
If tshuzu(p) > tshuzu(q) Then
t = tshuzu(p)
tshuzu(p) = tshuzu(q)
tshuzu(q) = t
End If
Next
Next
nstr = tshuzu(1) & tshuzu(2) & tshuzu(3) & tshuzu(4) & tshuzu(5) & tshuzu(6)
For k = 1 To 6
If InStr(nstr,1111 * k) 0 Then
flag = 0
Exit For
End If
Next
dbstr = ""
For k = 1 To 6
If InStr(dbstr,tshuzu(k)) = 0 Then
dbstr = dbstr & tshuzu(k)
End If
Next
If Len(dbstr) < 3 Then
flag = 0
End If
End If
If flag = 1 Then
n = n + 1
Range("A1") = n
Range("B" & n) = tstr
End If
Next
Next
Next
Next
Next
Next
Range("A2").Select
Range("A2") = "Finish"
End Sub
保存后回EXCEL界面——菜单——工具——宏——宏——执行.
运行宏“Macro1”,得到结果.
代码写的不好,你看能不能行.