|
|
四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?
[这个贴子最后由天山草在 2013/09/26 08:08pm 第 4 次编辑]
今天仿照陆教授的程序,用 VB6 写了一个。程序中增加了 1092 种“排列”的具体情况。程序及运行结果如下:
Private Sub form_Click()
Dim n(12), a(3) As Integer
For k1 = 1 To 3: n(1) = k1
For k2 = 1 To 3: n(2) = k2
For k3 = 1 To 3: n(3) = k3
For k4 = 1 To 3: n(4) = k4
For k5 = 1 To 3: n(5) = k5
For k6 = 1 To 3: n(6) = k6
For k7 = 1 To 3: n(7) = k7
For k8 = 1 To 3: n(8) = k8
For k9 = 1 To 3: n(9) = k9
For k10 = 1 To 3: n(10) = k10
For k11 = 1 To 3: n(11) = k11
For k12 = 1 To 3: n(12) = k12
For i = 1 To 3: a(i) = 0: Next i
For i = 1 To 12: a(n(i)) = a(n(i)) + 1: Next i
If n(1) <> n(2) And n(2) <> n(3) And n(3) <> n(4) And n(4) <> n(5) _
And n(5) <> n(6) And n(6) <> n(7) And n(7) <> n(8) And n(8) <> n(9) _
And n(9) <> n(10) And n(10) <> n(11) And n(11) <> n(12) _
And a(1) = 4 And a(2) = 4 And a(3) = 4 Then
s = s + 1
rint n(1); ","; n(2); ","; n(3); ","; n(4); ","; n(5); ","; n(6); ","; _
n(7); ","; n(8); ","; n(9); ","; n(10); ","; n(11); ","; n(12)
End If
Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next
rint "-------------------------------------------------"
rint "排列种数为 "; s
End Sub
运行结果:
1 , 2 , 1 , 2 , 1 , 3 , 1 , 3 , 2 , 3 , 2 , 3
1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 1 , 3 , 2 , 3
1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 2 , 3 , 1 , 3
1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 1 , 3 , 2 , 3
1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 2 , 3 , 1 , 3
1 , 2 , 1 , 2 , 3 , 1 , 3 , 1 , 2 , 3 , 2 , 3
1 , 2 , 1 , 2 , 3 , 1 , 3 , 1 , 3 , 2 , 3 , 2
1 , 2 , 1 , 2 , 3 , 1 , 3 , 2 , 1 , 3 , 2 , 3
1 , 2 , 1 , 2 , 3 , 1 , 3 , 2 , 3 , 1 , 2 , 3
………………………………………………………………
3 , 2 , 3 , 2 , 3 , 1 , 2 , 1 , 2 , 1 , 3 , 1
3 , 2 , 3 , 2 , 3 , 1 , 2 , 1 , 3 , 1 , 2 , 1
3 , 2 , 3 , 2 , 3 , 1 , 3 , 1 , 2 , 1 , 2 , 1
-------------------------------------------------
排列种数为 1092
|
|