国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
我的VB資料

 

 

在數學的統(tǒng)計分支里,排列與組合是一個很重要的分支。在各種實際應用中,排列與組合也扮演了重要的角色。舉例來說,安排人員參加活動可以看作是組合的應用。比方說,現(xiàn)在有十個人,選出其中的五個人參加某項集體活動。由于彼此之間有著脾氣性格等因素,所以,不同的人員組合有著不同的工作效率?,F(xiàn)在,要求你找出效率最高的人員安排。因為選出五人參加活動,沒有順序問題,因此是一個組合的問題。如果說,隨機的選出一個組合,用計算機來實現(xiàn)是非常簡單的,常見的“洗牌算法”就能實現(xiàn)。要找出效率最高的組合,只要遍歷所有的組合即可。問題是如何遍歷所有的組合。

 

還是利用數學知識,我們知道組合函數Cm,n)代表著從n個人選m個人的組合的可能數。那么C5,10=252就表示本題有252種選擇。如果,給每一種組合都標上標號,不同的標號代表不同的組合,這樣遍歷所有的組合就轉化為遍歷標號了。

基于這個思想,完成下面的代碼。其中,主函數有兩個。

一個是

Public Shared Function C(ByVal C1 As Integer, _

 ByVal C2 As Integer) As Integer

用來計算組合數的,C1是上標,C2是下標。

另一個是

Public Shared Function GetCombination( _

ByVal Lower As Integer, _

ByVal Upper As Integer, _

ByVal Count As Integer, _

ByVal Index As Integer) As Integer()

     這是根據參數返回一個組合,

Lower表示返回組合的下限

Upper表示返回組合的上限

Count表示組合中的元素數

Index表示該組合的標號

     要獲得一個組合,直接調用即可。如:

         Dim T() as Integer

         T= GetCombination(1,10,5,20)

     這個表示返回本題的一個組合,其中20是標號

如果想隨機得到一個組合,只要給一個隨機的標號即可

     要遍歷組合,設置參數I即可。如:

         Dim T() as Integer,I as Integer

         For I=1 to C(5,10)

              T=GetCombination(1,10,5,I)

              DoSomeWork         執(zhí)行根據組合計算效率的代碼

         Next

     這樣,就遍歷了所有的組合

代碼賦予其后,用的是VB2005

Public Class clsCombination

Public Shared Function GetCombination( _

ByVal Lower As Integer, _

ByVal Upper As Integer, _

ByVal Count As Integer, _

ByVal Index As Integer) As Integer()

        If Count > Upper - Lower + 1 Then Return Nothing

        If Count <= 0 Then Return Nothing

        If Lower > Upper Then Return Nothing

        If Lower < 0 OrElse Upper < 0 Then Return Nothing

        Dim tS() As String = GetC(Lower, Upper, Count, Index) _

.Split(",".ToCharArray, _

 StringSplitOptions.RemoveEmptyEntries)

        Dim tI() As Integer

        ReDim tI(tS.GetUpperBound(0))

        Dim i As Integer

        For i = 0 To tI.GetUpperBound(0)

            tI(i) = tS(i)

        Next

        Return tI

    End Function

Private Shared Function GetC(ByVal Lower As Integer, _

ByVal Upper As Integer, _

ByVal Count As Integer, _

ByVal Index As Integer) As String

Dim i As Integer, tS As String

        If Count = Upper - Lower + 1 Then

            tS = ""

            For i = Lower To Upper

                tS &= i & ","

            Next

            Return tS

        End If

        Index = Index Mod C(Count, Upper - Lower + 1)

        i = C(Count - 1, Upper - Lower)

        If Index < i Then

            tS = Lower & "," & _

 GetC(Lower + 1, Upper, Count - 1, Index)

        Else

            tS = GetC(Lower + 1, Upper, Count, Index - i)

        End If

        Return tS

    End Function

Public Shared Function C(ByVal C1 As Integer, _

 ByVal C2 As Integer) As Integer

        If C1 < 0 OrElse C1 > C2 OrElse C2 <= 0 Then Return 0

        If C1 = 0 Then Return 1

        Dim i As Integer, S1 As Single = 1

        For i = 1 To C1

            S1 *= (C2 - i + 1) / i

        Next

        Return S1

    End Function

End Class

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/grenet/archive/2009/09/29/4615779.aspx

 

 

VB控件大全屬性詳解 組合框

http://wenku.baidu.com/view/8d35a869a45177232f60a21a.html

 

所有文檔>>教學課件>>大學課件>>

VB第四章 常用控件

http://www.doc88.com/p-90693914376.html

 

廣州電視大學VB教程

http://vb.ougz.com.cn/wlkj/xxfd_zdfd.html

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
遍歷選中區(qū)域的單元格
獲取10個1-20之間的隨機數,要求不能重復
輸出Pearson和Spearman相關系數表格的命令升級啦!一步到位,就是這么任性!拒絕復制粘貼!...
大寫=Upper;小寫=Lower;首字母大寫=Proper
C語言編程 有一篇文章,共有3行文字,每行80個字符。要求分別統(tǒng)計出其中英文字母,數字,空...
聯(lián)發(fā)博動筆試
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服