首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

请问一个排列的数组实现方式

2012-08-09 
请教一个排列的数组实现方式?有n个数,对于每一个数都只能取1或者0,一共有2^n(2的n次方)的排列形式,请教这

请教一个排列的数组实现方式?
有n个数,对于每一个数都只能取1或者0,一共有2^n(2的n次方)的排列形式,请教这个矩阵如何写?

结果应该是:假设n=3
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

如何写这个矩阵存放到数组a(2^n-1,2)??

谢谢~~

[解决办法]

C# code
void Main(){    var list=new int[]{1,0};    var result=(from a in list               from b in list               from c in list               select a+" "+b+" "+c).Distinct();    result.ToList().ForEach(r=>Console.WriteLine(r));   /*    1 1 1    1 1 0    1 0 1    1 0 0    0 1 1    0 1 0    0 0 1    0 0 0   */}
[解决办法]
仔细看N=3的数组,你会发现这数组与二进制有关系。即,
把每一行当成一个正整数的二进制,则,
第一行等于0,第二行等于1,第二行等于2。。。。
所以:我给出如下代码,窗体上加BUTTON1、TEXTBOX2、TEXTBOX3三个控件,TEXTBOX3设成多行的。
VB.NET code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        buildN(Val(TextBox2.Text), TextBox3)    End Sub    Private Sub buildN(ByVal n As Integer, ByVal mytext As TextBox)        mytext.Text = ""        Dim i As Integer, aa As String = ""        Dim j As Integer, bb As String = ""        Dim k As Integer = 0        Dim a(2 ^ n - 1, n - 1) As String        For i = 0 To (2 ^ n - 1)            aa = ""            aa = Change10JZ(i)            bb = ""            If Len(aa) < n Then                For j = 0 To n - Len(aa) - 1                    bb &= "0"                Next            End If            Dim s As String = bb & aa            For k = 0 To n - 1                a(i, k) = s.Substring(k, 1)                mytext.Text &= a(i, k)            Next            mytext.Text &= vbCrLf        Next    End Sub    Private Function Change10JZ(ByVal a As Integer) As String '把一个10进制数转成2进制        Dim jg As String = ""        Do Until (a < 2)            jg += (a Mod 2).ToString            a = a \ 2        Loop        jg += a.ToString        Change10JZ = ""        Dim i As Integer        For i = Len(jg) - 1 To 0 Step -1            If jg.Substring(i, 1) <> " " Then Change10JZ += jg.Substring(i, 1)        Next        Return Change10JZ    End Function 

热点排行