以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:关于排列组合的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47971)

--  作者:zbsdkq012890
--  发布时间:2014/3/20 15:27:00
--  求助:关于排列组合的问题
我想实现预先设定的20个汉字假如分别为a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、q、r、s、t代替。
然后在命令窗口自动输出任意三个字不同顺序的排列结果。
例如:abc、cba、abd等等。这个命令有哪位大侠能帮忙做出来啊,小弟在此不胜感激。谢谢!!

--  作者:Bin
--  发布时间:2014/3/20 16:16:00
--  
Dim nlist As new List(of String)
nlist.AddRange("a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t".split("?"))
Dim slist As new List(of String)
Do While slist.count<=2
    Dim s As String = nlist(Rand.Next(0,nlist.count-1))
    If slist.Contains(s)=False Then
        slist.Add(s)
    End If
Loop
Dim str As String
For Each s As String In slist
    str=str & s
Next
MessageBox.show(str)

--  作者:zbsdkq012890
--  发布时间:2014/3/21 8:41:00
--  
首先谢谢你给出的代码,这的感谢!
我测试了你的代码也没有问题,但是每执行一次只会出一个结果,我是想执行后把所有结果都在输出部分一次全部列出。请问怎么改动代码啊,兄弟我真的不会。

--  作者:Bin
--  发布时间:2014/3/21 9:02:00
--  
提问最好一开始就精确描述自己的需求,不要含糊其辞,惜字如金! 浪费别人的时间,也浪费您的时间!

Dim nlist As new List(of String)
nlist.AddRange("a?b?c?d?e?f".split("?"))
Dim slist As new List(of String)
Dim str As String
For i As Integer = 0 To nlist.count -1
    For j As Integer = 0 To nlist.count -1
        For k As Integer = 0 To nlist.count -1
            If i<>j AndAlso i <> k AndAlso j <> k Then
                str=nlist(i) & nlist(j) & nlist(k)
                If slist.Contains(str)=False Then
                    slist.Add(str)
                End If
            End If
        Next
    Next
Next
For Each s As String In slist
    output.show(s)
Next