精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 關(guān)于VB的枚舉法和遞推問題

    關(guān)于VB的枚舉法和遞推問題
    最近在學(xué)VB,碰到類似二元遞推的問題一直找不到合適的表達(dá)方式.比如有一題,上十三個(gè)臺階的,規(guī)定一次只能上1個(gè)或者2個(gè)臺階,求所有的上臺階方案組合及其總數(shù).遞推式很顯然為n=n+1 或者 n= n+2,但是要怎么樣讓計(jì)算機(jī)隨機(jī)(或者是按某種順序)地去選擇加上去的是1或者是2,又或是更多的呢?
    類似地還有一根鋼管長多少多少,然后有兩種截取方法,問是截取后剩下的最少的截取方案等等..糾結(jié)就在于那個(gè)每次變化的取值要可以在2個(gè)之中任意取,又要都取到~腦子有點(diǎn)糊涂,
    還有,一個(gè)小小的問題,要怎么樣讓7個(gè)變量在7個(gè)數(shù)值中任意選取,但兩兩互不重復(fù)呢?(打個(gè)比方而已)要構(gòu)造function要怎么構(gòu)造啊~
    其他人氣:253 ℃時(shí)間:2019-10-30 22:59:42
    優(yōu)質(zhì)解答
    遞歸的方法,形式如下:
    function findit(varStep)
    call findit(1)
    call findit(2)
    end function
    具體代碼(VB6下測試通過)
    窗體上放一個(gè)文本框(Name=txtResult,MultiLine=True)和按鈕(name=cmdCalc)
    Private pCount As Long
    Private strResult As String
    Private Sub cmdCalc_Click()
    pCount = 0
    strResult = ""
    Call FindIt(13,1,"")
    Call FindIt(13,2,"")
    txtResult.Text = strResult '顯示結(jié)果
    cmdCalc.Caption = Format(pCount)
    pCount = 0
    strResult = ""
    End Sub
    Private Function FindIt(nValue As Integer,nStep As Integer,strPath As String) As Boolean
    Dim nValTemp As Integer
    Dim strCurPath As String
    nValTemp = nValue - nStep'下一步可用的臺階
    strCurPath = strPath & Format(nStep)'記錄這一步的走法(1或者2)
    Select Case nValTemp
    Case Is < 0 '嘗試失敗,直接退出
    FindIt = False
    Exit Function
    Case 0 '成功獲得一種走法,記錄走法,計(jì)數(shù)加1
    pCount = pCount + 1
    strResult = strResult & IIf(Len(strResult) > 0,vbCrLf,"") & strCurPath
    FindIt = True
    Exit Function
    Case Else '還沒走完
    Call FindIt(nValTemp,1,strCurPath)
    Call FindIt(nValTemp,2,strCurPath)
    End Select
    End Function不好意思啊~我的水平有限,看看不太懂您寫的代碼,包括findit的這個(gè)函數(shù)。其實(shí)好像這個(gè)問題沒有您寫得那么“高深”啊~ 這個(gè)練習(xí)是在我們學(xué)完了循環(huán)語句之后的,您能不能用循環(huán)語句給我做一遍呢~辛苦您啦~或者您給我說說思路吧,我就是不知道該怎么樣在每一步有兩種選擇方案時(shí)進(jìn)行隨機(jī)選擇。很抱歉,對這方面我也不是很熟,沒法用循環(huán)來表示遍歷。期待其他高手來解答!要糾正一點(diǎn),這問題不是隨機(jī),而是遍歷,就是說所有的情況都要列舉出來。用遞歸來表示遍歷思路上最簡單,就是實(shí)現(xiàn)的時(shí)候有點(diǎn)麻煩,可能要設(shè)置一些臨時(shí)變量和標(biāo)記變量。函數(shù)findit()的思路就是:先假設(shè)要走的臺階數(shù)還有13,對每種走法進(jìn)行嘗試。如果還有臺階,則調(diào)用它本身,對于走1步和走2步分別進(jìn)行嘗試。如果可走的臺階為0,則說明得到一種走法,<0則說明走法錯(cuò)誤(比如只剩1個(gè)臺階時(shí)走2步),>0說明還有臺階,繼續(xù)調(diào)用過程本身。Private Sub Command1_Click()ClsDim a%(0 To 13), i%a(0) = 0a(1) = 1i = 2Do While i <= 13a(i) = a(i - 1) + a(i - 2)i = i + 1LoopPrint "上臺階的方案共有"; a(13); "種"End Sub
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點(diǎn),以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機(jī)版