




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
遞歸與回溯算法1遞歸的定義
所謂遞歸就是一個(gè)函數(shù)或過程可以直接或間接地調(diào)用自己。我們大家都熟悉一個(gè)民間故事:從前有一座山,山上有一座廟,廟里有一個(gè)老和尚正在給小和尚講故事,故事里說,從前有一座山,山上有一座廟,廟里有一個(gè)老和尚正在給小和尚講故事,故事里的故事是說……。象這種形式,我們就可以稱之為遞歸的一種形象描述,老和尚什么時(shí)候不向下講了,故事才會(huì)往回返,最終才會(huì)結(jié)束。再如:前面多次提到的求N!的問題。我們知道:當(dāng)N>0時(shí),N!=N*(N-1)!,因此,求N!的問題化成了求N*(N-1)!的問題,而求(N-1)!的問題又與求N!的解法相同,只不過是求階乘的對(duì)象的值減去了1,當(dāng)N的值遞減到0時(shí),N!=1,從而結(jié)束以上過程,求得了N!的解。2也就是說,求解N!的過程可以用以下遞歸方法來表示:在這里,為了定義n!,就必須先定義(n-1)!,為了定義(n-1)!,又必須先定義(n-2)!……,上述這種用自身的簡單情況來定義自己的方式稱為遞歸定義。一個(gè)遞歸定義必須是有確切含義的,也就是說,必須一步比一步簡單,最后是有終結(jié)的,決不允許無限循環(huán)下去。上面的例子中,當(dāng)N=0時(shí)定義一個(gè)數(shù)1,是最簡單的情況,稱為遞歸的邊界,它本身不再使用遞歸定義。與遞推一樣,每一遞歸都有其邊界條件。但不同的是,遞推是由邊界條件出發(fā),通過遞推式來求值,而遞歸則是從自身出發(fā)來達(dá)到邊界條件。3遞歸的調(diào)用
在Pascal程序中,子程序可以直接自己調(diào)用自己或間接調(diào)用自己,則將這種調(diào)用形式稱之為遞歸調(diào)用。其中,我們將前者的調(diào)用方式稱為簡單遞歸,后者稱為間接遞歸。由于目前我們介紹、掌握的知識(shí)尚還無法實(shí)現(xiàn)間接遞歸,只有留待在以后的內(nèi)容中我們再作介紹。本節(jié)只介紹直接遞歸。遞歸調(diào)用時(shí)必須符合以下三個(gè)條件:(1)可將一個(gè)問題轉(zhuǎn)化為一個(gè)新的問題,而新問題的解決方法仍與原問題的解法相同,只不過所處理的對(duì)象有所不同而已,即它們只是有規(guī)律的遞增或遞減。(2)可以通過轉(zhuǎn)化過程使問題回到對(duì)原問題的求解。(3)必須要有一個(gè)明確的結(jié)束遞歸的條件,否則遞歸會(huì)無止境地進(jìn)行下去。下面我們通過一些例子,來解釋遞歸程序的設(shè)計(jì)。4programaa;vart:longint;n:integer;functionfac(n:integer):longint;beginifn=0thenfac:=1
elsefac:=fac(n-1)*n;end;例1:按照以上的分析,用遞歸的方法來求N!的解。程序如下:測試數(shù)據(jù):輸入:inputn=5輸出:5!=120beginwrite('inputn=');read(n);ifn<0thenwriteln('n<0,dataerrer')elsebegint:=fac(n);writeln(n,'!=',t)endend.5如圖展示了程序的執(zhí)行過程:在這里,因?yàn)楹瘮?shù)FAC的形參是值形參,因此每調(diào)用一次該函數(shù),系統(tǒng)就為本次調(diào)用的值形參N開辟了一個(gè)存儲(chǔ)單元,以便存放它的實(shí)參的值。也就是說,對(duì)于遞歸函數(shù)或遞歸過程,每當(dāng)對(duì)它調(diào)用一次時(shí),系統(tǒng)都要為它的形式參數(shù)與局部變量(在函數(shù)或過程中說明的變量)分配存儲(chǔ)單元(這是一個(gè)獨(dú)立的單元,雖然名字相同,但實(shí)際上是互不相干的,只在本層內(nèi)有效),并記下返回的地點(diǎn),以便返回后程序從此處開始執(zhí)行。6例2:讀入一串字符倒序輸出,以字符’&’為結(jié)束標(biāo)志,用過程來實(shí)現(xiàn)。分析:由題意可知,讀一串字符當(dāng)然只能一個(gè)個(gè)地讀入,要倒序輸出,就要一直讀到字符’&’。如輸入的一段字符為ABCDEFGH&’,則倒序輸出的結(jié)果應(yīng)該是’&HGFEDCBA’。(1)讀入一個(gè)字符;(2)讀(該字符后的)子串并倒序輸出;(3)然后輸出讀入字符(指(1)讀入的字符)(4)在(2)中若子串是空(即遇字符’&’),表示子串已完,不再處理子串。以上(2)表示一操作依賴另一操作,所以需要用遞歸調(diào)用。(4)表示已知操作(遞歸的終止)。7程序如下:programaa;procedurereverse;varch:char;beginread(ch);ifch<>'&'thenreverse;write(ch);end;beginreverse;writeln;end.測試數(shù)據(jù):輸入:abcdefghijklmn&輸出:&nmlkjihgfedcba8例3:利用遞歸,將一個(gè)十進(jìn)制整數(shù)K轉(zhuǎn)化為N進(jìn)制整數(shù)(N<=10)。測試數(shù)據(jù):輸入:K和N的值193輸出:轉(zhuǎn)化后的N進(jìn)制整數(shù)201programaa;varn,k:integer;proceduretentok(k,n:integer);varr:integer;beginr:=kmodn;k:=kdivn;ifk<>0thententok(k,n);write(r);end;beginread(k,n);tentok(k,n);writeln;end.9遞歸涌的一凡般適革合場衛(wèi)合1.?dāng)?shù)瓣據(jù)的混定義下形式嬸是按稠遞歸來定義絹的.如:鍵裴波在那契踏數(shù)列件的定齡義為罩:Fn捷=F畢n-絡(luò)1+域Fn浴-2毛F1概=0部F2喜=1be捎gi倦nre樸ad經(jīng)(n);s:天=fi俊b(投n);wr攻it枯el俘n(嚷s);en喊d.測試帳數(shù)據(jù)大:輸入凳:5輸出?。?pr肥og拖ra區(qū)maa;va涼rn:斥in蒸te挪ge鼓r;s:像lo魂ng帥in智t;Fu拉nc度ti司onFI罩B(繼N:射in銹te那ge攜r)伙:i歸nt吐eg捕er;Be騎gi呆nIf暈n底=1胞t熟he語n圾FI蕉B:億=0El盤se婦i恒f豆n=嬌2集th郵en臭F序IB臟:=持1El蜻se性F摟IB草:=宏FI絮B(拿n-扯1)警+F愈IB愿(n棉-2肯)En暈d;10例如洋;著堆名的Ha據(jù)no逝i塔(恥漢諾葡塔)寬問題幣。3.?dāng)?shù)春據(jù)之婆間的罪結(jié)構(gòu)靜關(guān)系埋按遞童歸定年義的例如報(bào):大傳家將景在后資面的健學(xué)習(xí)聯(lián)內(nèi)容阿中遇秘到的致樹的蔥遍歷闊、圖態(tài)的搜嘉索等份問題燙。2.問腿題的寧求解請方法枝是按樹遞歸馬算法金來實(shí)趴現(xiàn)的銅。11判斷尊運(yùn)行品結(jié)果1.爐pr真og昏ra泰m謹(jǐn)d1潤;va初rs,雀n:鼻in幼te垂ge持r;fu憲nc俘ti龍onf(欺n:去in所te吃ge徒r)暈:i湖nt偵eg毯er;be終gi疾nif刺n機(jī)=1播t糟he熟n閣f:奴=1el因se索f筐:=絞n*慌n+堅(jiān)f(簡n-笑1)憤;en妨d;be島gi使nwr來it療e(食'i啞np嘩utn:昌')掛;r撤ea蘆dl喜n(品n);s:般=f(徹n);wr循it訊el碼n(厭'f舊('會(huì),n,'島)=東',墻s)en瓶d.輸入:in堵pu極t日n:王3輸出:練習(xí)因一122.pr廢og衰ra挪m猛d2藥;va疼ra,嫌b:覆in碎te走ge古r;fu據(jù)nc縫ti裹onf(群n:斑in舅te其ge河r)買:i意nt段eg托er;be眉gi滔nif側(cè)n已=1演t唯he把n鴉f:圈=1el叢se蒼i附f蝴n=攏2融th眨en腸f傅:=輝2el霸se粥f峽:=酷f(胖n-劑1)妹+f存(n缸-2呀);en叫d;be血gi海nre呢ad取(a);b:筐=f(瓶a);wr節(jié)it鍛el誓n(朽b);en恰d.輸入:4輸出:133.pr船og幸ra館m搶d3塵;va縫ra,攻b,棵c,宏d:錦in絹te評(píng)ge壁r;pr乏oc當(dāng)ed渾ur恰ep(竿a:搖in恒te扁ge述r;渡va還rb:柴in槐te因ge滅r);va午rc:返in兼te光ge絲式r;be肉gi帖na:劈燕=a餐+1刷;b緊:=茄b+攀1;懇c:止=2何;d桶:=款d+草1;wr精it饑el湖n(磁'm淺',觸a,諸b,脹c,壓d);if蔑a毀<3繩t衫he筐np(擱a,揚(yáng)b);wr爹it戶el壇n(唇'n輸',舊a,路b,陡c,觸d)en快d;be蟻gi漿na:賀=1遮;百b:舌=1匆;薯c:痕=1顧;相d:概=1朱;wr雹it任el量n(鏈'x扭',競a,賊b,無c,堤d);p(歌a,杠b);wr黎it門el怠n(己'y阿',劃a,值b,響c,記d);en討d.14程序喬設(shè)計(jì)1.(文導(dǎo)件名咳:d4印.p咱as)利世用遞敬歸過籍程,斜將一頑個(gè)十漿進(jìn)制吸整數(shù)K轉(zhuǎn)化甚為7進(jìn)制蛛整數(shù)削。測試寫數(shù)據(jù)厭:輸入衛(wèi):十酒進(jìn)制事數(shù)K19輸出般:7進(jìn)制硬整數(shù)25152.(文邪件名況:d5淘.p交as)樓擋梯有N階臺(tái)炒階,討上樓??梢詡饕徊讲樯弦唤夒A,班也可乏以一休步上鍛二階夸,計(jì)閃算共扯有多童少種化不同撒走法鬼。測試獎(jiǎng)數(shù)據(jù)鞭:輸入高:輸許入N的值6輸出課:走終法總封數(shù)13提示悠:N=為1剃f(握1)略=1N=盯2稀f(斤2)隨=2當(dāng)N>慨=3時(shí)f(料N)=補(bǔ)f(固N(yùn)-熄1)稍+f男(N酷-2宇)16遞歸宇及其薄應(yīng)用請計(jì)年算ac紛k(軋m,搶n)的值敵。(m,能n<=發(fā)5)例4:已知:ac槐k(負(fù)m,乘n)函數(shù)蒜的計(jì)冒算公賓式如慣下:17pr間og投ra限maa;va扣rm,識(shí)n:旺lo衫ng蔽in凝t;a:金lo羅ng逗in艇t;fu崇nc雙ti謀onac液k(醫(yī)m,棋n:捕lo詳ng令in尚t)覽:l懲on慎gi袍nt;be執(zhí)gi我nif睛m機(jī)=0學(xué)t歇he沃nac酬k:=播n+蠢1el考se徐i語f蘿n=匆0皆th旱enac指k:=刮ac街k(炸m-理1,讓1)el夾seac狐k:=醒a(bǔ)c包k(該m-威1,測ac可k(肆m,凳n-僻1)盞)en剝d;be猛gi訪nre炎ad商(m毅,n);a:宇=ac掛k(已m,房誠n);wr萍it服el街n(衫a);en句d.測試離數(shù)據(jù)輸入鹽:3毒4輸出這:12末518其Pa遲sc柳al程序蘇如下篩:例5:用輾雅轉(zhuǎn)相綠除法振求兩友個(gè)自浪然數(shù)m,倒n的最味大公存約數(shù)籮。思路鏟:輾構(gòu)轉(zhuǎn)相壯除法抱規(guī)定萬:求呆兩個(gè)魂正整問數(shù)m,立n(m>押=n)的俊最大蔬公約膝數(shù),環(huán)應(yīng)先禽將m除以n;求百得余伴數(shù)r,如果勺等于出零,向除數(shù)n就是m,仁n的最泄大公南約數(shù)借;如觸果r不等珠于零街,就猴用n除以r,再排看所滑得余均數(shù)是驕否為日零。泊重復(fù)腿上面采過程程,直燙到余捆數(shù)r為零硬時(shí),石則上壺一次煌的余船數(shù)值富即為m,短n的最拍大公津約數(shù)確。用羨其數(shù)則學(xué)方連式描撤述如隙下:19pr法og蜜ra話m蛛aa毅;va閱rm,雙n,木t:脆in株te黎ge秤r;fu強(qiáng)nc頭ti厚on塘f塑(m倚,n編:i括nt逮eg涼er狠):鉤in懶te皇ge真r;va蹲r克r:篇in啞te逆ge供r;be味gi蹤蝶nif贏(發(fā)m渠mo脊d釘n)狗=0伯t虜he輔n跑f:扭=nel辜sebe浩gi延nr:叔=m遍m惕od蹈n佳;f:擇=f竿(n蹈,r奴);en伴d;en乓d;be勸gi端nre詳ad婚ln者(m漏,n);if肚m敞<n競t引he斧nbe貨gi遙nt:疊=m例;m:仰=n畫;n:莊=t輸;en梁d;wr決it礦el攻n(塵'g廉d='隊(duì),f(克m,圈n))升;en糟d.測試造數(shù)據(jù)輸入形:20吼1致8輸出織:gd=220fu訓(xùn)nc傳ti敢onfi拘b(葉n:隊(duì)in咱te疊ge戰(zhàn)r)寒:l遵on嘩gi者nt;be減gi哲nif固(n=0序)o瀉r(散n=嘗1)深th鈴en誼fi魯b:臘=1el良se雪fi困b:厭=f再ib籌(n丸-1秧)+亡fi趁b(爪n-歸2)拔;en場d;爬樓虹梯時(shí)條可以1次走1個(gè)臺(tái)管階,惹也可信以1次走2個(gè)臺(tái)獲階。剛對(duì)于勞由n個(gè)臺(tái)錘階組矮成的霞樓梯握,共瀉有多偽少種牧不同的的走粗法?1個(gè)臺(tái)預(yù)階:知只有1種走灰法;2個(gè)臺(tái)對(duì)階:勻有兩霉種走馳法;(1銹+1;2)n個(gè)臺(tái)黑階(n續(xù)>2輕),記帽走法裹為f(握n):第1次走1個(gè)臺(tái)睬階,特還剩(n暴-1肚)個(gè)臺(tái)艇階,風(fēng)走法咸為f(孝n-淹1);第1次走2個(gè)臺(tái)懲階,談還剩(n狀-2充)個(gè)臺(tái)像階,拼走法擾為f(塊n-霉2)。所以嘴,f(柱n)=問f(瘡n-碗1)抵+f嶺(n匪-2史)。定義f(丈0)醫(yī)=1,則輔有:21遞歸溫過程簽或函糊數(shù)直切接(月或間槐接)紫調(diào)用服自身龍,但瀉如果強(qiáng)僅有寄這些筑操作慘,那扭么將冶會(huì)由尖于無像休止化地調(diào)悲用而沈引起灑死循粗環(huán)。版因此右一個(gè)嘆正確童的遞膨歸程跌序雖隆然每墨次調(diào)糠用的丹是相煙同的秀子程篩序,蔑但它木的參蜻數(shù)、礎(chǔ)輸入封數(shù)據(jù)潔等均掙有所墓變化喪,并皮且在莊正常屈的情水況下右,隨爛著調(diào)捉用的然深入慣,必翅定會(huì)附出現(xiàn)團(tuán)調(diào)用斃到某靠一層稼時(shí),貝不再策執(zhí)行逗調(diào)用責(zé)而是巷終止搞函數(shù)常的執(zhí)似行。遞歸沾思路隱是把示一個(gè)縫不能管或不驚好直號(hào)接求乏解的斬“大廚問題大”轉(zhuǎn)障化成爸一個(gè)躲或幾案個(gè)“鳴小問哭題”峽來解扇決,衛(wèi)再把身這些悲“小久問題榮”進(jìn)偉一步歲分解賀成更慨小的妥“小閑問題嫌”來食解決照,如稍此分直解,弟直至糠每個(gè)樂“小艘問題糖”都廊可以疊直接揚(yáng)解決綠。遞歸隊(duì)分解鋸不是氏隨意蝴地分煉解,碰要保磨證“仗大問誼題”棋和“晝小問膊題”相似。例:臘采用偏遞歸麻算法聲求實(shí)煮數(shù)數(shù)牙組A[尤0.灰.n務(wù)]中的采最小形值。22算法1:設(shè)f(咬a,靜i)為數(shù)就組元禽素a[桌0]東..終a[介i]中的寨最小唇值。袋當(dāng)i=保0時(shí),壟有f(借a,若i)=錘a[喝0];假刪設(shè)f(撓a,固i-愿1)已求流出,濁則:算法2:設(shè)f(蔽i,君j)為a[遠(yuǎn)i]金..惜a[萌j]中的列最小蝦值。桶將a[殼0]茅..容a[挪n]看作鋼一個(gè)壺線性裁表,網(wǎng)它可勁以分竹解成a[尖0]索..擱a[敵i]和a[浸i+哪1]足..招a[效n]兩個(gè)環(huán)子表雨,分京別求令得各訓(xùn)自的己最小勞值x和y,較胃小者搞就是a[貓0]絨..左a[盤n]中的送最小按值。市而求反解子肅表中質(zhì)的最換小值譯方法絲式與總象表相質(zhì)同,絮即再目分別辜把它遙們分洲成兩垃個(gè)更蕩小的刊子表摟,如灰此不叨斷分周解,裳直到事表中狂只有警一個(gè)覽元素忍為止(該元帶素就撿是該扛表中竿的最輝小值)。23fu譜nc患ti握onmi遣n(橫i,列j:蠢in永te惠ge綁r)擔(dān):r蜂ea季l;va漁rmi形d:栗in召te冒ge劉r;mi辦n1抖,m工in窗2:浸re猾al惕;be幕gi峰nif逆i=魔j廚t脾he西n無m統(tǒng)in曲:=a[尖i]el浮sebe拌gi睬nmi欣d:濃=(i+私j(luò))施d爹iv判2;居m賞in蓄1:廊=mi慣n(味i,終mi怨d);mi腎n2含:=控mi透n(偉mi傘d+論1,才j)灰;if殿mi斧n1學(xué)<m石in魂2牌t蕉he寸n似m腔in堵:=煤mi罩n1el倍se您mi拉n:秩=m顆in量2;en息d;en聯(lián)d;24漢諾愛塔問買題:有n個(gè)半派徑各偉不相粗同的暮圓盤冬,按鉗半徑只從大冠到小抽,自炊下而真上依碼次套哲在A柱上心,另歲外還顛有B、C兩根績空柱磨。要騎求將A柱上碧的n個(gè)圓粗盤全鹽部搬業(yè)到C柱上消去,耐每次承只能勸搬動(dòng)躬一個(gè)雙盤子撿,且肥必須遙始終冰保持吳每根毒柱子蜓上是往小盤課在上山,大怪盤在住下。怕輸出憶總共鼻移動(dòng)季的次砌數(shù)及司移動(dòng)排方案鞠。ABC25思路善:假車定可垂以通葡過某石個(gè)過花程把1針上策面的N-浪1個(gè)盤譜搬到交過渡予針2中,孔然后線把1針中什剩下輕的1個(gè)盤州移動(dòng)千到3針,扇然后巧再把百過渡柔針2中的N-什1個(gè)盤默移到3針去跨,這谷樣完講成了呢移盤收。思酬路是衡很明寫確的蠢,我寫們把N個(gè)盤吸子移減動(dòng)問川題轉(zhuǎn)為化成N-霧1個(gè)盤逢子移獨(dú)動(dòng)問川題,協(xié)即如虜何從1針把N-隨1個(gè)盤把子移圣動(dòng)到2針和溪從2針把N-賭1個(gè)盤賠子移擠動(dòng)到3針。授同理完,移N-永1個(gè)盤按子問閉題又燃可以夏進(jìn)一拍步簡勉化為勿移N-陽2盤子賣問題扯,這渴種簡夏化過扛程實(shí)家質(zhì)就帆是一那個(gè)遞騰歸過娘程??薜f劉歸過打程不冰能永吳遠(yuǎn)遞糊歸下悉去,略必須犬有邊漁界條耗件令誰過程例停止杜調(diào)用益。顯全然,滴邊界淘條件票是當(dāng)黨只有賓一個(gè)惹盤子慕時(shí),筍僅需合作最滑后一河次移泄動(dòng)即僑可。誰下面慘為移奇盤子客游戲PA蛛SC磚AL程序闊。26pr報(bào)og言ra顛maa;va面rn:熊in耗te沿ge災(zāi)r;pr到oc宅ed粱ur神emo鵝ve僑(n隆,a口,b條,c盡:i果nt治eg亦er);be現(xiàn)gi衫nif熄n延=1狀t窩he竄nwr遲it勉el弊n(氧a,'型--崖--惠--爪>'配,c勤)el胡sebe綢gi楊nmo翁ve尿(越n-崗1,開a,粘c,輕b)提;wr顯it序el揪n(粱a,'虎--膀--倆--伶>'揮,c厲);mo演ve無(n找-1凈,b延,a誘,c救);en姥d;en波d;be濁gi退nre朗ad項(xiàng)ln棟(n);mo斬ve瓦(n齒,1參,2嘴,3航);en需d.測試范數(shù)據(jù)墳:輸入:3輸出:1-級(jí)--孟--乓->唯31-檔--畜--浪->奮23-足--朽--靈->突21-樓--冒--槽->后32-身--撤--燃->鼻12-致--抬--簽->繼31-威--昆--管->番327例7:數(shù)的卷計(jì)算(1)問蔑題描正述我們鏈要求忘找出自具有椒下列揮性質(zhì)偵數(shù)的卸個(gè)數(shù)(包含煤輸入活的自茄然數(shù)n)勿:先輸騎入一孫個(gè)自錢然數(shù)n(菜n<=聚10惑00竭),然后挺對(duì)此書自然障數(shù)按怕照如廈下方插法進(jìn)夾行處甩理:1、不伶作任剛何處應(yīng)理;2、在償它的爛左邊呀加上裕一個(gè)掩自然未數(shù),但該最自然只數(shù)不仰能超腸過原陽數(shù)的級(jí)一半;3、加御上數(shù)福后,繼續(xù)憐按此應(yīng)規(guī)則槍進(jìn)行擋處理,直到龜不能末再加規(guī)自然壺?cái)?shù)為新止.28樣例:輸入:參6滿足獎(jiǎng)條件閘的數(shù)知為6肌(此部蜜分不熱必輸坐出)162612聯(lián)63613環(huán)6輸出:瓶629Va嚷ran寄s,成n:過Lo金ng器in慘t;pr蠅oc滴ed票ur跨edf頓s(腿m:罵Lo磚ng跑in慮t);va宇ri:知Lo紙ng模in遮t;be越gi窩nin思c(最an侵s);fo家r頑i:爽=1稀t懸o竊m卡di申v掏2屋dodf環(huán)s(溜i);en格d;be宇gi僚nan冒s:=騙0;re解ad喝(n);df影s(默n);wr潑it計(jì)eL斷n(扇an商s);en奶d.參考間程序30例8:反序拒輸出(1)問寶題描靜述從鍵抄盤輸疑入一厚個(gè)多求位數(shù)(N冊>0睛,N位數(shù)栗小于柜等于9位)內(nèi),用章遞歸飽方法誤把這恭個(gè)多盈位數(shù)射顛倒親過來汗輸出麻。(2)問爪題解爭析由于N比較獵大,畫所以麗需要煤長整工型。朋長整享型的秩位數(shù)<=柔10位。(3)測有試數(shù)貌據(jù)輸入剝:12太34接56努78輸出潛:87籃65衫43亮2131pr榨og殘ra揪maa;va等rn:貧Lo撇ng格in公t;pr惹oc瘋ed貝ur嫂erd滿(n別um姑be顏r:強(qiáng)Lo曾ng抱in債t);be對(duì)gi鏈nwr宜it科e(細(xì)nu勻mb裳ermo唐d烏10繁:1或);nu忠mb牧er賭:=茅nu祖mb度er尋d自iv等1圣0;if拌n敗um雄be活r<窮>0內(nèi)t翅he鋒nrd棚(n突um概be卻r);en娃d;be午gi恨nwr銀it升e(嚴(yán)'i如np農(nóng)utn=弱')苗;re肝ad泊Ln則(n);rd城(n);en洗d.321.斗(文件恥名:d臂6.苗pa寧s)有一價(jià)對(duì)雌鬧雄兔躬,每魚兩個(gè)距月就房誠繁殖燙各一榆對(duì)兔厲子。羅問N個(gè)月薦后共預(yù)有多健少對(duì)抱兔子倡?提示捐:測試宰數(shù)據(jù):輸入:10輸出:55練習(xí)寸二332.港(文件頭名:d回7.規(guī)pa拒s)計(jì)算宋組合朱數(shù)提示生:測試迷數(shù)據(jù):輸入:6樓2輸出:15343.前N項(xiàng)和(1)問黃題描籮述給定N(祝N>表=1歐),用圈遞歸啊的方水法計(jì)瓶算1+庭2+郊3+挑4+鋒..蔥..體..火+(賓N-寄1)太+N待,結(jié)果雕賦值病給S。(2)測囑試數(shù)東據(jù)輸入:5輸出:s=駁1535程序縮慧提示:pr貢og撈ra絡(luò)maa;va疲rt:汪in峽te毯ge蠟r;黨s:寒Lo續(xù)ng諒in侵t;fu淹nc蝴ti牢onfa威c(禮n:并in樹te器ge有r)驚:L漁on頸gi薄nt;be避gi炊n湖i愛f益n=辦1摘th機(jī)enfa灣c:=(1)eL跡sefa筋c:=(2);en沉d;be屋gi義nre中ad遣(t);撐s瘦:=fa秋c(抄t);wr輝it茅eL貝n(標(biāo)'s='們,(3));en拋d.36搜索誓算法對(duì)于倚給定混的問閑題,如果蟲有簡扔明的夢數(shù)學(xué)往模型請揭示挎問題望的本花質(zhì),我們計(jì)盡量斬用解優(yōu)析法胞求解到;如亦果無瓦法建擺立數(shù)根學(xué)模洋型,或者梯即使晶有一敢定的查數(shù)學(xué)貧模型,但采拋用數(shù)充學(xué)方甲法解個(gè)決有嘆一定嗎的困敞難,我們啄只好舟用模糞擬或千搜索隙來求竟解。盡管憐搜索存的時(shí)咱間復(fù)菊雜度殲一般礦是指蓬數(shù)級(jí)叢的,宴但在忌缺乏釀解決攏問題棕的有候效模彎型時(shí)尤,搜會(huì)索卻汗是一毫種行刷之有拘效的唯解決病問題獎(jiǎng)的基怠本方子法,昏而且館使用糟搜索挖算法峽解決慌問題遞時(shí),尿在實(shí)春現(xiàn)過罷程中竿有很載大的伯優(yōu)化姥空間租。信承息學(xué)心奧賽挖中考茫察搜磁索算稀法,辨一是遼考察術(shù)選手鋪算法長運(yùn)用顧能力蛋,二腫是考雀察選竿手算膝法優(yōu)達(dá)化能志力。枚舉披法(耽窮舉筑法)回溯掀(深鋤度優(yōu)愛先搜竭索)廣度芬優(yōu)先濕搜索37回溯差法是虎搜索趙算法退中的忍一種件控制溜策略朽,它條是從習(xí)初始緩狀態(tài)腫出發(fā)讓,運(yùn)壤用題拆目給瘡出的草條件世、規(guī)該則,儲(chǔ)按照深度隨優(yōu)先搜索踢的順泊序擴(kuò)穗展所郊有可面能情穴況,姐從中付找出膠滿足釘題意聞要求聾的解缺答。營即:從問摔題的鎖某一嶺種可伸能出妻發(fā),搜索托從這算種情料況出笛發(fā)所末能達(dá)喘到的奴所有發(fā)可能,如果主有路導(dǎo)可以球走下育去,輔就走陣到下積一個(gè)特狀態(tài)嗚,繼蹈續(xù)按價(jià)照這粉種規(guī)孫則搜客索;勁當(dāng)這疏一條凳路走急到“述盡頸頭貝”而銹沒達(dá)姨到目扮標(biāo)狀像態(tài)的公時(shí)候,再倒故回上劍一個(gè)捉出發(fā)霧點(diǎn),從另鹿一個(gè)禿可能贏出發(fā),繼續(xù)用搜索臭,直拒到達(dá)址到目辨標(biāo)狀上態(tài)。38例:華迷宮理求解從迷球?qū)m的污入口案進(jìn)去悠后是閃如何遺找到沾出口部的?如果秀你不險(xiǎn)了解紡迷宮沿結(jié)構(gòu)最顯然宇只能唇是摸秀索著扛前進(jìn)蝕,比薯如先腐往一在個(gè)方胡向走脂,若啦走不景通那興就只勉能退辭回來巴再試夜試另脂一個(gè)須方向努。但商在走序的過鄙程中翅你一切定會(huì)進(jìn)有意漿識(shí)地餡“記好住”屬你員已經(jīng)樂走過麗的路次,否壁則你歡會(huì)被宵困在錯(cuò)迷宮暮中永兄遠(yuǎn)也描走不魔出來嚼了。計(jì)算真機(jī)解畝迷宮將時(shí),圖通常巧用的斬是“技窮舉脹求解界”的拐方法般,即蘿從入蝕口出她發(fā),肢順某清一方瘋向向盡前探射索,心若能垃走通練,則催繼續(xù)茶往前陰走;炒否則悠沿原漢路退陶回,吸換一劇個(gè)方騰向再繞繼續(xù)撥探索妨,直羞至所旦有可拖能的陵通路癥都探對(duì)索到溪為止,如果勺所有億可能字的通擇路都喬試探符過,宰還是初不能盛走到炭終點(diǎn)畫,那隱就說賢明該棒迷宮覽不存申在從徑起點(diǎn)忌到終末點(diǎn)的綢通道剪。先看瞞兩個(gè)蕉動(dòng)畫周演示肝的例敘子。394041由此耐,求底迷宮競中一符條路峰徑的渾算法嚇的基煤本思寒想是格:若當(dāng)陷前位渠置“可通”,則堵納入“當(dāng)前撈路徑”,并前繼續(xù)柿朝“下一定位置”探索培;若當(dāng)選前位撇置“哲不可中通”療,則筑應(yīng)順社著“幼來的掉方向賓”退丈回到撐“前嶼一通押道塊速”,循然后馬朝著障除“屈來向?!敝型獾闹衿渌L(fēng)方向促繼續(xù)篩探索桐;若話該通巴道塊臘的四妥周四宣個(gè)方召塊均投“不駕可通張”,債則應(yīng)腔從“祖當(dāng)前堵路徑完”上襪刪除期該通能道塊耽。42例:n皇后均問題在n×侄n的國蓮際象笛棋棋般盤上倍,放往置n個(gè)皇兩后,愈使任辛何一性個(gè)皇止后都繞不能掘吃掉塞另一歪個(gè),需滿吐足的萌條件字是:同一嫂行、扭同一鄰列、惡同一狼對(duì)角捉線上晨只能糟有一域個(gè)皇奶后。欺求所語有滿噸足要垮求的閘放置揉方案梅。43【分析】一、演問題辭解的饑形式拘:x:特ar老ra均y[1出..標(biāo)n]齊o怪f訴in互te橡ge首r;//x[儉i]:第i個(gè)皇卸后放渣在第i行,辜第x[萄i]列,步保證點(diǎn)所有口皇后群不同么行問題皆的解滔變成蕩求(x[叉1],x[臘2],…,x[副n])4皇后離問題堪的解堂:雀(2,4,1,3),組(3,1,4,2)44二、烤放置抹第k(惹1<晉=k飼<=影n)個(gè)皇霞后的胖遞歸弄算法搞:Pr辦oc奮ed吧ur飼ett鳳ry嘗(k);//搜索轎第k個(gè)皇年后所鈴在的截列x[閱k],前k-放1個(gè)已臭放好,即已院求得x[播1]嚷…x叼[k寶-1壓]va牧ri:離in寫te爛ge充r;be哥gi里nif筒k=窄n+幕1陸t雪he微n鑰p淺ri勢nt造//輸出租放置沉方案端:數(shù)未組xel池sefo獄r代i:蚊=1孩to雨n非d卷o圍/帝/搜索汁第k個(gè)皇趙后所鉗在的參列iif第k個(gè)皇隱后能祥夠放閥置在枕第i列th主enbe謀gi抱n放置哪第k個(gè)皇卷后在遠(yuǎn)第i列(x[貌k]=汁i);tt測ry(k+化1);en預(yù)d;en樹d;45三、跡如何謎判斷且第k行的色皇后浙能不蔬能放禮在第i列:方法專一:靈定義砍函數(shù)fu顛nc代ti電on如o釋k(兇k,典i:塑in腸te鏟ge混r)盲:b論oo弓le具an退;va鬧r迅j傭:i仗nt稻eg圣er昂;be感g(shù)i闊nfo岔r給j:妖=1壞t轎o綢k-彎1蛋doif誤(x恨[j]=i)吼or叮(x搞[j枯]+便j=k+唯i)仆or口(x祥[j姿]-昂j=k-復(fù)i)始th芬enbe安gi辣nok涼:=糟fa族ls殿e;ex極it簽;en龍d;ok貸:=滲tr帶ue如;en儀d;46方法始二:播設(shè)置館標(biāo)志co帆l:平ar懲ra么y[饅1.氣.n根]o菠fbo畢ol歉ea糾n;//co牽l[然i]=勺tr死ue,表考示第i列上紀(jì)已有器皇后le訂ft虛:a鈴rr燃ay算[2掉..剪2*n]祖ofbo昂ol看ea醬n;//le嗚ft宮[i]=貼tr鋪ue固,表示肌行列汗和為i的對(duì)帆角線擾上已祖有皇爪后ri雞gh縱t:保ar程ra巧y[饒1-鑼n.棋.n嘴-1犯]百ofbo圾ol飾ea推n;//ri豆gh純t[父i]=宏tr再ue筍,表示笛行列膚差為i的對(duì)罷角線本上已萌有皇鴨后pr雷o(hù)g頂ra亭m破qu寬ee俯n;債//遞歸腸算法co霧ns島tma革xn=1蜘0;va嶺rx:聽ar旁ra捕y[叮1.莖.m蹈ax孫n]皺of付i皂nt兼eg患er辱;n,往i,商to凡t:刃in斑te笨ge世r;co傷l:逮ar般ra欠y[粉1.業(yè).m洪ax嘆n]遇ofbo掏ol擦ea細(xì)n;le妖ft遲:a雖rr牽ay完[2冠..從2*ma含xn諸]o甜fbo趟ol腫ea劍n;ri卻gh夏t:看ar晉ra錢y[擋1-亭ma翠xn哨..訓(xùn)ma覆xn樣-1母]o絕fbo糞ol胳ea易n;pr剃oc僑ed鵝ur灰e唉ou脅t;斬//輸出微解va霜ri:吹in批te橡ge收r;be含gi療nfo粘r托i:荷=1糊t報(bào)o販n-兄1求dowr熊it陷e(刮x[侍i],璃'導(dǎo)')臂;wr寒it膏el量n(揮x[批n])獵;en牙d;47pr前oc迷ed鏡ur爆ett蠅ry匪(k違:i莫nt噸eg歐er);況//搜索活第k個(gè)皇諒后的疼位置va軍ri:它in精te侍ge陣r;be鉤gi軌nif壯k紐奉=n榴+1納t捆he煤nbe薦gi求n穗to及t:妙=t歡ot半+1芝;遷ou訊t;域e邁nd氏;愉/斜/n個(gè)皇葉后都魄放置即完畢鄰,輸梯出解fo徹r勤i:緒=1榴t鞋o俱n緩doif政n抽ot飽(co中l(wèi)[泳i]炭orle駝ft基[k語+i]逝orri岡gh辛t[息k-們i])怠t懶he戴nbe喬gi謊nx[泉k]:床=i播;本/吊/記錄瓜第k行皇什后的隔位置co昂l[深i]:臭=t淺ru死e;le打ft賢[k拾+i]:只=t韻ru歉e;ri獵gh死t[箏k-禿i]:上=t附ru樣e;tt卸ry寒(k圣+1螺);腐//搜索身第k+僑1個(gè)皇竿后的弓位置co對(duì)l[辜i]:示=f鴉al必se惡;le領(lǐng)ft包[k耗+i]:謙=f土al姥se掏;ri符gh團(tuán)t[旨k-撓i]:不=f違al未se捐;羽//回溯en耐d;en淚d;48be錫gi謙nas蛙si給gn寬(i陜np揮ut尖,’南qu向ee幟n.但in’)文;re昌se終t(拴in彈pu刮t);as鋪si漲gn秤(o蕉ut偵pu著t,帆’q瀉ue體en鑰.o身ut’)觀;re慈wr植it檢e(惡ou予tp蒸ut);fi消ll虹ch刑ar展(c蝴ol賀,s決iz嘴eo蟲f(秘co演l)泉,f侵al詳se);fi弓ll睡ch致ar濫(l鄭ef臘t,繞si撲ze踢of洲(l喊ef旱t)暴,f恐al巧se);fi盡ll定ch繡ar行(r劇ig察ht森,s裁iz漁eo飼f(陣ri鮮gh勻t)駐,f冬al趕se);re綢ad潛ln愈(n);to蓄t:笑=0句;tt潤ry誦(1濟(jì));wr睡it嶼el鄙n(奏to哈t);cl拴os震e(卻in妄pu急t);cl夠os煙e(沫ou馬tp敬ut);en例d.窗//遞歸脖算法49pr餐og就ra詳m抽qu純ee益n;精//非遞紗歸算撥法co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公差配合試題庫(附答案)
- 掌握心理調(diào)節(jié)方法提升養(yǎng)生水平
- 客車檢車員中級(jí)試題及答案
- 大一新生述職報(bào)告
- 學(xué)期教育創(chuàng)新創(chuàng)業(yè)
- 容易忽視的日常小知識(shí)
- 腎上腺瘤患者護(hù)理查房
- 學(xué)前教育生涯發(fā)展
- 攝像的基本知識(shí)和技巧
- 2025年金屬制繩、纜項(xiàng)目合作計(jì)劃書
- 2024年江西應(yīng)用工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- 國內(nèi)外旅游公共服務(wù)研究的文獻(xiàn)綜述
- 集團(tuán)公司各職能部管控分權(quán)手冊
- 2鋼結(jié)構(gòu)工程常用構(gòu)件代號(hào)及相關(guān)知識(shí)
- 機(jī)車電測儀表使用及檢修
- PMS顏色對(duì)照表
- 營銷手冊范本匯總(24個(gè)共)35.doc
- 美制統(tǒng)一螺紋表UNC_UNF DS
- 2012年北京大學(xué)醫(yī)學(xué)部外國留學(xué)生本科入學(xué)考試
- 七年級(jí)英語閱讀理解50篇(附答案)
- 乙酸乙酯的制備ppt課件
評(píng)論
0/150
提交評(píng)論