算法的程序實現(xiàn)_第1頁
算法的程序實現(xiàn)_第2頁
算法的程序實現(xiàn)_第3頁
算法的程序實現(xiàn)_第4頁
算法的程序實現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

用解析法解決問題什么是解析法解析法就是在分析具體問題的基礎上,抽取出一個數學模型,這個數學模型能用若干解析表達式表示出來,解決了這些表達式問題也就得到了解決。解析法是程序設計中最常用的算法之一。解析法解決問題步驟1、問題分析未知----已知數學表達式

S=(a+b)*h/22、編程實現(xiàn)3.2用窮舉法解決問題1.什么是窮舉法?也叫枚舉法、列舉法——將求解對象一一列舉出來,然后逐一加以分析、處理,并驗證結果是否滿足給定的條件,窮舉完所有對象,問題將最終得以解決。任務一:水仙花數水仙花數是指一個三位數,它的各位數的立方和正好等于該數本身。如:153=13+53+33。請設計算法求解“水仙花數問題”。水仙花數代碼:Dimx,b,s,gAsIntegerForx=100To999Step1a=i\100b=(i-a*100)\10c=i-a*100-b*10Ifa^3+b^3+c^3=xThenPrintxEndIfNextx①求解對象應該是有限的;②有窮舉規(guī)則③一時找不出解決問題的更好途徑時;窮舉法的適用條件:窮舉法解決問題步驟:通常可以從兩個方面進行分析:⑴確定范圍:問題所涉及的情況有哪些,情況的種數可不可以確定。⑵驗證條件:分析出來的這些情任務二:百錢買百雞”

相傳我國南北朝時,京城有個賣雞的張姓老漢,他有一個兒子非常聰明,尤其擅長算術,到十二三歲時已是遠近聞名的“小神童”了。當朝宰相聽說后想試探個究竟,于是派仆人到張老漢的店里打聽雞的價錢,張老漢告知“公雞五文錢一只,母雞三文一只,小雞一文三只”。于是,仆人給他一百文錢,要求公雞、母雞、小雞都要,數量不多不少正好一百只,命他次日送到府上。這可難為了張老漢,他怎么湊也湊不夠這個數,只好問兒子?!靶∩裢辈换挪幻?,掐指一算就給出了答案,第二天照數送到宰相府。宰相見難不倒“小神童”,又讓仆人給張老漢一百文錢,要求再買一百只雞,搭配方法不能和上次一樣。結果“小神童”又很快給出了答案,宰相暗暗稱奇,想最后再試一次,誰知還是沒有難倒“小神童”。這個故事就是我國古代數學名著《張邱建算經》里的百雞百錢問題。請用窮舉法求解所有的組合方法。百錢買百雞⑴確定范圍⑵驗證條件:百錢百雞代碼:

Dimx,y,zAsInteger

Forx=1To20

Fory=1To33

Forz=1To100

If(5*x+3*y+1/3*z=100)And(x+y+z=100)Then

Printx,y,z

EndIf

Nextz

Nexty

Nextx

EndSub我們使用信用卡在柜員機上取錢時,為什么系統(tǒng)要限制輸入密碼的次數?小結1、窮舉法分析:⑴確定范圍⑵驗證條件2、自覺遵守網絡道德與法規(guī)數組3.1概述

數組的概念:數組并不是一種數據類型,而是一組相同類型數據的集合。用一個統(tǒng)一的名字(數組名)代表邏輯上相關的一批數據,每個元素用下標變量來區(qū)分;下標變量代表元素在數組中的位置。其表示形式:A(1),A(10)X(1,1),X1(1,10),X(2,10)Y(0,0,0),Y(1,2,5)VisualBasic中的數組,按不同的方式可分為以下幾類:按數組的大?。ㄔ貍€數)是否可以改變來分為:定長數組、動態(tài)(可變長)數組。按元素的數據類型可分為:數值型數組、字符串數組、日期型數組、變體數組等。按數組的維數可分為:一維數組、二維數組、多維數組。對象數組:菜單對象數組、控件數組。3.2一維數組3.2.1一維數組的聲明

形式:

Dim數組名([<下界>to]<上界>)[As<數據類型>]或:Dim數組名[<數據類型符>]([<下界>to]<上界>)例:Dima(1to10)AsInteger‘聲明了a數組有10個元素與上面聲明等價形式:Dima%(1to10)1是下標的下界10是下標的上界數組元數的數據類型說明:1.數組名的命名規(guī)則與變量的命名相同。2.數組的元素個數:上界-下界+1。3.缺省<下界>為0,若希望下標從1開始,可在模塊的通用部分使用OptionBase語句將設為1。其使用格式是:OptionBase0|1'后面的參數只能取0或1例如:OptionBase1'將數組聲明中缺省<下界>下標設為14.<下界>和<上界>不能使用變量,必須是常量,常量可以是直接常量、符號常量,一般是整型常量。5.如果省略As子句,則數組的類型為變體類型。6.數組中各元素在內存占一片連續(xù)的存儲空間,一維數組在內存中存放的順序是下標大小的順序,如圖5-1所示:二、排序問題1.選擇法排序算法思想:1)對有n個數的序列(存放在數組a(n)中),從中選出最小(升序)或最大(降序)的數,與第1個數交換位置;2)除第1個數外,其余n-1個數中選最小或最大的數,與第2個數交換位置;3)依次類推,選擇了n-1次后,這個數列已按升序排列。1.選擇法排序算法思想:1)對有n個數的序列(存放在數組a(n)中),從中選出最?。ㄉ颍┗蜃畲螅ń敌颍┑臄?,與第1個數交換位置;2)除第1個數外,其余n-1個數中選最小或最大的數,與第2個數交換位置;3)依次類推,選擇了n-1次后,這個數列已按升序排列。Fori=1Ton-1p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti選擇法排序(升序)的VB程序:2.冒泡法排序(遞增)

算法思想:(將相鄰兩個數比較,小的調到前頭)1)有n個數(存放在數組a(n)中),第一趟將每相鄰兩個數比較,小的調到前頭,經n-1次兩兩相鄰比較后,最大的數已“沉底”,放在最后一個位置,小數上升“浮起”;2)第二趟對余下的n-1個數(最大的數已“沉底”)按上法比較,經n-2次兩兩相鄰比較后得次大的數;3)依次類推,n個數共進行n-1趟比較,在第j趟中要進行n-j次兩兩比較。Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti冒泡法排序(升序)的VB程序:3.5用遞歸法解決問題“從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事,講什么呢?”…………故事這個故事有什么特點?自己調用自己如果在一個函數中,它自己調用了自己,這種現(xiàn)象叫遞歸調用。如果A函數調用B函數,B函數又反過來調用A函數,那這種現(xiàn)象也叫做遞歸調用。如果一個函數在定義時,直接或間接的調用了自己,這種算法在程序設計中統(tǒng)稱為遞歸法。自定義函數遞歸法一般需要定義函數來實現(xiàn)。雖然VB為我們提供了大量的標準函數,但我們在實際應用時難免有時還是找不到合意的,那就只有自己解決了,這樣為了一個特定的任務而編出來的函數叫自定義函數。Abs()、len()、date()、sqr()、msgbox()等使用遞歸算法必須要滿足以下的遞歸條件:(1)存在遞歸結束條件及結束時的值(2)能用遞歸形式表示,且遞歸向終止條件發(fā)展遞歸調用算法兔子繁殖問題

有人養(yǎng)了一對兔子,這對兔子以后每月生一對兔子,新生兔子從第三個月開始,也是每月生一對兔子.從第三個月起

溫馨提示

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

評論

0/150

提交評論