0,1的排列问题。
有M个0,1的排列,这个排列通过程序打印出来。如有3个0,1的排列,应打出:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
这该怎样生成,请高手帮忙,先谢了!对了,M的取值不是事先知道的,可以临时改变。
[解决办法]
给你写了个函数CreateArray, 并有例子:
Option Explicit
Private Sub CreateArray(ByVal M As Integer, ByRef ABuf)
ReDim ABuf(2 ^ M - 1, M - 1)
Dim iRow As Integer
Dim iCol As Integer
Dim iNum As Integer
For iRow = 0 To 2 ^ M - 1
iNum = iRow
For iCol = M - 1 To 0 Step -1
ABuf(iRow, iCol) = iNum Mod 2
iNum = iNum \ 2
Next iCol
Next iRow
End Sub
Private Sub Command1_Click()
Dim A() As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
k = InputBox( "输入M的值 ")
CreateArray k, A
For i = 0 To 2 ^ k - 1
For j = 0 To k - 1
Debug.Print A(i, j);
Next j
Debug.Print
Next i
End Sub
[解决办法]
另一种方法,不用转换为二进制,
Dim M, a() As Integer, i, P
M = 4: ReDim a(M - 1)
Do
P = M - 1
For i = 0 To P
Debug.Print a(i);
Next: Debug.Print
Do
a(P) = a(P) + 1
If a(P) > 1 Then a(P) = 0: P = P - 1 Else Exit Do
Loop While P > -1
Loop While P > -1