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

脑子有点晕,被一个算法难住了!该怎么处理

2012-01-08 
脑子有点晕,被一个算法难住了!我现在想写一个函数,FuntionTJ(ByvalCountasInteger,Byvalaar()asstring)Cou

脑子有点晕,被一个算法难住了!
我现在想写一个函数   ,Funtion   TJ(Byval   Count   as   Integer,Byval   aar()   as   string)
Count代表要取得的个数,aar代表一维数组,
比如,Count为3,一数组aar={‘a’, 'b ', 'c ', 'd ', 'e '}
通过此函数的操作结果是得到数目为3个且不能重复的数组元素的集合。如下:
abc
abd
abe
acd
ace
ade
bcd
bce
bde
cde


[解决办法]
单纯实现count=3时,是比较简单的
Sub Main()
Dim arr As String() = { "a ", "b ", "c ", "d ", "e "}
Dim i1, i2, i3 As Integer
For i1 = 0 To 2
For i2 = i1 + 1 To 3
For i3 = i2 + 1 To 4
Console.Write(arr(i1))
Console.Write( ", ")
Console.Write(arr(i2))
Console.Write( ", ")
Console.Write(arr(i3))
Console.WriteLine()
Next
Next
Next
Console.ReadLine()
End Sub
但是,如果扩展到任意count的话,我觉得可以考虑一下创建“生成任意不重复随机数“的思路去尝试
[解决办法]
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim aa As String()
Dim bb As String() = { "a ", "b ", "c ", "d "}
aa = TJ(3, bb)
For Each cc As String In aa
Console.WriteLine(cc)
Next
End Sub

Public Function TJ(ByVal Count As Integer, ByVal aar() As String) As String()
Dim temparray As New ArrayList
Dim i As Integer
For i = 0 To aar.Length - 1
If Not temparray.Contains(aar(i)) Then
temparray.Add(aar(i))
End If
Next
If temparray.Count < Count Then Return New String() { "error "}
Dim temparray2 As String()
ReDim Preserve temparray2(Count - 1)
temparray.CopyTo(0, temparray2, 0, Count)
Return temparray2

End Function

End Class

热点排行