用窮舉法求解問題的實踐示例_第1頁
用窮舉法求解問題的實踐示例_第2頁
用窮舉法求解問題的實踐示例_第3頁
用窮舉法求解問題的實踐示例_第4頁
用窮舉法求解問題的實踐示例_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、枚舉算法及其程序?qū)崿F(xiàn)(復(fù)習(xí)) 謝丹,知識回顧 枚舉算法的基本思想 根據(jù)問題本身的性質(zhì),將問題的可能解一一列舉,并根據(jù)題目的條件逐一作出判斷,從中找出符合條件的解。即使中途找到合適的解也要繼續(xù)找下去,要將所有可能的解找完才結(jié)束。在列舉的過程中,既不能遺漏,也不能重復(fù)。,枚舉算法的程序?qū)崿F(xiàn),1.根據(jù)枚舉算法的主要思想:一一列舉,逐個判斷。因此,一般情況下枚舉算法的代碼具有以下特點(diǎn): (1)用循環(huán)語句在一定范圍內(nèi)列舉所有可能的解。 (2)用選擇語句判斷和選擇真正的解。 2.枚舉算法的一般格式: For(列舉所有可能的解) If 可能是正確解 Then 輸出該解或計數(shù) Next,例題解析 例1 雞兔同

2、籠問題。一群雞和兔關(guān)在一個籠子里,其中共有頭30個,腳60只,問雞和兔各幾只?現(xiàn)用VB程序求解,程序如下: Private Sub Command1_Click() Dim i As Integer, j As Integer For i=1 to 30 j= If Then List1.additem 雞:+str(i)+只,兔+str(j)+只。 End if Nxt i End Sub,(1)該事件處理過程采用的算法是。(填:解析算法/枚舉算法) (2)在程序中和劃線處,填入適當(dāng)?shù)恼Z句或表達(dá)式,把程序補(bǔ)充完整。 程序中劃線處應(yīng)填入。 程序中劃線處應(yīng)填入。 解析:由語句list1.addi

3、tem 雞:+str(i)+只,兔+str(j)+只。可知,變量i表示雞的數(shù)量,j表示兔的數(shù)量,所以處應(yīng)填入30-i。處判斷腳的數(shù)量是否等于60,即處的條件表達(dá)式i*2+j*4=60,只要滿足兩個條件,即把數(shù)據(jù)展示在列表框中。由上分析可知,循環(huán)變量i表示雞的數(shù)量,其值由1到30,逐一與條件“i*2+j*4=60”進(jìn)行比對,若符合的進(jìn)行展示,由此特征可判斷該程序是典型的枚舉算法程序。 答案: (1)枚舉算法(2)30-i i*2+j*4=60,例2 水仙花數(shù)是指其各位數(shù)字的3次冪之和等于它自身的數(shù),例如153是水仙花數(shù),因為153=1+125+27。打印100999中的水仙花數(shù)的算法如下: Pr

4、ivate Sub command1_click() For i=100 to 999 a=i100 得到i的百位數(shù)字 b=i10 mod 10 得到i的十位數(shù)字 c= Ifi= Then print i Next i End Sub 程序中劃線處應(yīng)填入。 程序中劃線處應(yīng)填入。 答案: i mod 10或 i-a*100-b*10 a3+b3+c3,在設(shè)定多個變量的列舉范圍時,可以利用驗證條件,盡可能縮小列舉范圍,減少列舉變量,從而減少循環(huán)的嵌套。 例3 百雞百錢問題:100元錢買100只雞,公雞5元一只,母雞3元一只,小雞一元3只。代碼如下: For x=1 To 100 For y=1 T

5、o 100 For z=1 To 100 If x+y+z=100 and 5*x+3*y+z/3=100 Then 輸出該數(shù)組解或計數(shù) Next z Next y Next x,利用驗證條件,代碼可優(yōu)化為: For x=1 To 20公雞最多不超過20只 For y=1 To 33母雞最多不超過33只 z=100-x-y If 5*x+3*y+z/3=100 Then 輸出該數(shù)組解或計數(shù) Next y Next x,鞏固提高 例3 編寫“加法練習(xí)題生成器”程序,實現(xiàn)如下功能:在文本框Text1中輸入題數(shù)n,單擊“生成”按鈕Command1,在列表框List1中顯示n個兩數(shù)之和小于100的加法練習(xí)題。實現(xiàn)上述功能的VB程序如下,請在劃線處填入合適的代碼。 Private Sub Command_Click() Dim n As Integer, i As Integer, a As Integer, b As Integer Randomize n=Val(Text1.Text) i=_ Do While i=n a=Int(Rnd * 100) b=Int(Rnd * 100),If_ Then List1.AddItem”(”+Str(i)+”)”+Str(a)+”+”+Str(b)+”=” i=i+1 End If Loop End Sub 解析:循環(huán)變量i的初值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論