noip講義2遞推法_第1頁(yè)
noip講義2遞推法_第2頁(yè)
noip講義2遞推法_第3頁(yè)
noip講義2遞推法_第4頁(yè)
noip講義2遞推法_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、遞推法遞推法 所謂遞推,是指從已知的初始條件出發(fā),依據(jù)某種遞推所謂遞推,是指從已知的初始條件出發(fā),依據(jù)某種遞推關(guān)系,逐次推出所要求的各中間結(jié)果及最后結(jié)果。其中初始關(guān)系,逐次推出所要求的各中間結(jié)果及最后結(jié)果。其中初始條件或是問(wèn)題本身已經(jīng)給定,或是通過(guò)對(duì)問(wèn)題的分析與化簡(jiǎn)條件或是問(wèn)題本身已經(jīng)給定,或是通過(guò)對(duì)問(wèn)題的分析與化簡(jiǎn)后確定。后確定。 可用遞推算法求解的題目一般有以下二個(gè)特點(diǎn):可用遞推算法求解的題目一般有以下二個(gè)特點(diǎn): 1、問(wèn)題可以劃分成多個(gè)狀態(tài);、問(wèn)題可以劃分成多個(gè)狀態(tài); 2、除初始狀態(tài)外,其它各個(gè)狀態(tài)都可以用固定的遞推關(guān)、除初始狀態(tài)外,其它各個(gè)狀態(tài)都可以用固定的遞推關(guān)系式來(lái)表示。系式來(lái)表示。

2、 在我們實(shí)際解題中,題目不會(huì)直接給出遞推關(guān)系式,而在我們實(shí)際解題中,題目不會(huì)直接給出遞推關(guān)系式,而是需要通過(guò)分析各種狀態(tài),找出遞推關(guān)系式。是需要通過(guò)分析各種狀態(tài),找出遞推關(guān)系式。采用具體化、特殊化的方法尋找規(guī)律采用具體化、特殊化的方法尋找規(guī)律 平面上平面上n條直線,任兩條不平行,任三條不共點(diǎn),問(wèn)條直線,任兩條不平行,任三條不共點(diǎn),問(wèn)這這n條直線把這平面劃分為多少個(gè)部分?條直線把這平面劃分為多少個(gè)部分? 設(shè)這設(shè)這n條直線把這平面劃分成條直線把這平面劃分成Fn個(gè)部分。個(gè)部分。 先用具體化特殊化的方法尋找規(guī)律,如圖所示,易知先用具體化特殊化的方法尋找規(guī)律,如圖所示,易知的前幾項(xiàng)分別為的前幾項(xiàng)分別為

3、這些數(shù)字之間的規(guī)律性不很明顯,這些數(shù)字之間的規(guī)律性不很明顯, 較難用不完全歸納法較難用不完全歸納法猜出猜出Fn的一般表達(dá)式。但我們可以分析前后項(xiàng)之間的遞推關(guān)系,的一般表達(dá)式。但我們可以分析前后項(xiàng)之間的遞推關(guān)系,因?yàn)檫@些圖形中,后一個(gè)都是由前一個(gè)添加一條直線而得到的,因?yàn)檫@些圖形中,后一個(gè)都是由前一個(gè)添加一條直線而得到的,添加一條直線便增加若干個(gè)區(qū)域。添加一條直線便增加若干個(gè)區(qū)域。 一般地,設(shè)原來(lái)的符合題意的一般地,設(shè)原來(lái)的符合題意的n-1條直線把這平面分成條直線把這平面分成 個(gè)區(qū)域,再增加一條直線個(gè)區(qū)域,再增加一條直線l,就變成,就變成n條直線,按題設(shè)條條直線,按題設(shè)條件,這件,這l必須與原有

4、的必須與原有的n-1條直線各有一個(gè)交點(diǎn)條直線各有一個(gè)交點(diǎn), 且這且這n-1個(gè)交點(diǎn)個(gè)交點(diǎn)及原有的交點(diǎn)互不重合。這及原有的交點(diǎn)互不重合。這n-1個(gè)交點(diǎn)把個(gè)交點(diǎn)把l劃分成劃分成n個(gè)區(qū)間,每個(gè)區(qū)間,每個(gè)區(qū)間把所在的原來(lái)區(qū)域一分為二,所以就相應(yīng)比原來(lái)另增個(gè)區(qū)間把所在的原來(lái)區(qū)域一分為二,所以就相應(yīng)比原來(lái)另增了了n個(gè)區(qū)域,即:個(gè)區(qū)域,即: 這樣,我們就找到了一個(gè)從這樣,我們就找到了一個(gè)從Fn-1到到Fn的的遞推式,再加上的的遞推式,再加上已知的初始值已知的初始值F1=2,就可以通過(guò),就可以通過(guò)n-1步可重復(fù)的簡(jiǎn)單運(yùn)算推導(dǎo)步可重復(fù)的簡(jiǎn)單運(yùn)算推導(dǎo)出出Fn的值。的值。var a,i,n:longint;begin

5、 read(n); a:=2; for i:=2 to n do a:=a+i; writeln(a);end. 在平面內(nèi)畫(huà)五條直線和一個(gè)圓,最多能把平面分成在平面內(nèi)畫(huà)五條直線和一個(gè)圓,最多能把平面分成多少部分?多少部分? 平面上有平面上有8個(gè)圓,最多能把平面分成幾部分?個(gè)圓,最多能把平面分成幾部分? 123456Fn=Fn-1+2 (n-1) 圓周上兩個(gè)點(diǎn)將圓周分為兩半,在這兩點(diǎn)上寫(xiě)上數(shù)圓周上兩個(gè)點(diǎn)將圓周分為兩半,在這兩點(diǎn)上寫(xiě)上數(shù)1 1;然后將兩段半圓弧對(duì)分,在兩個(gè)分點(diǎn)上寫(xiě)上相鄰兩點(diǎn)上的然后將兩段半圓弧對(duì)分,在兩個(gè)分點(diǎn)上寫(xiě)上相鄰兩點(diǎn)上的數(shù)之和;再把數(shù)之和;再把4 4段圓弧等分,在分點(diǎn)上寫(xiě)上相

6、鄰兩點(diǎn)上的數(shù)段圓弧等分,在分點(diǎn)上寫(xiě)上相鄰兩點(diǎn)上的數(shù)之和,如此繼續(xù)下去,問(wèn)第之和,如此繼續(xù)下去,問(wèn)第6 6步后,圓周上所有點(diǎn)上的步后,圓周上所有點(diǎn)上的數(shù)數(shù)之之和是多少?和是多少? 分析分析: :先可以采用作圖嘗試尋找規(guī)律。先可以采用作圖嘗試尋找規(guī)律。第一步:圓周上有兩個(gè)點(diǎn),兩個(gè)數(shù)的和是第一步:圓周上有兩個(gè)點(diǎn),兩個(gè)數(shù)的和是1+1=21+1=2;第二步:圓周上有四個(gè)點(diǎn),四個(gè)數(shù)的和是第二步:圓周上有四個(gè)點(diǎn),四個(gè)數(shù)的和是1+1+2+2=61+1+2+2=6;增加數(shù)之和恰好是第一步;增加數(shù)之和恰好是第一步圓周上所有數(shù)之和的圓周上所有數(shù)之和的2 2倍。倍。第三步:圓周上有八個(gè)點(diǎn),八個(gè)數(shù)的和是第三步:圓周上有

7、八個(gè)點(diǎn),八個(gè)數(shù)的和是1+1+2+2+3+3+3+3=181+1+2+2+3+3+3+3=18,增加數(shù)之和恰,增加數(shù)之和恰好是第二步數(shù)圓周上所有數(shù)之和的好是第二步數(shù)圓周上所有數(shù)之和的2 2倍。倍。第四步:圓周上有十六個(gè)點(diǎn),十六個(gè)數(shù)的和第四步:圓周上有十六個(gè)點(diǎn),十六個(gè)數(shù)的和1+1+2+2+3+3+3+3+4+4+4+4+5+5+5+5=541+1+2+2+3+3+3+3+4+4+4+4+5+5+5+5=54,增加數(shù)之和恰好是第三步數(shù)圓周上所有數(shù)之和的增加數(shù)之和恰好是第三步數(shù)圓周上所有數(shù)之和的2 2倍。倍。這樣我們可以知道,圓周上所有數(shù)之和是前一步圓周上所有數(shù)之和的這樣我們可以知道,圓周上所有數(shù)之和

8、是前一步圓周上所有數(shù)之和的3 3倍。倍。設(shè)設(shè)A An n為第為第n n步后得出的圓周上所有數(shù)之和,則步后得出的圓周上所有數(shù)之和,則A An n=3=3A An n1 1 在在 nn的正方形釘子板上(的正方形釘子板上(n是釘子板每邊上的是釘子板每邊上的釘子數(shù)),求連接任意兩個(gè)釘子所得到的不同長(zhǎng)度的釘子數(shù)),求連接任意兩個(gè)釘子所得到的不同長(zhǎng)度的線段種數(shù)線段種數(shù).Fn=Fn-1+n 如圖如圖1,是棱長(zhǎng)為,是棱長(zhǎng)為a的小正方體,圖的小正方體,圖2,圖,圖3由這樣的小正由這樣的小正方體擺放而成。按照這樣的方法繼續(xù)擺放,自上而下分別叫方體擺放而成。按照這樣的方法繼續(xù)擺放,自上而下分別叫第一層、第二層、第一

9、層、第二層、第、第n層,第層,第n層的小正方體的個(gè)數(shù)記層的小正方體的個(gè)數(shù)記為為sn。請(qǐng)寫(xiě)出求。請(qǐng)寫(xiě)出求sn的遞推公式。的遞推公式。1 3 6 10nssnn1 如圖,有邊長(zhǎng)為如圖,有邊長(zhǎng)為1的等邊三角形卡片若干張,使用這些的等邊三角形卡片若干張,使用這些三角形卡片拼出邊長(zhǎng)分別是三角形卡片拼出邊長(zhǎng)分別是2,3,4,的等邊三角形(如的等邊三角形(如圖所示)根據(jù)圖形推斷,寫(xiě)出求每個(gè)等邊三角形所用卡圖所示)根據(jù)圖形推斷,寫(xiě)出求每個(gè)等邊三角形所用卡片總數(shù)片總數(shù)sn的遞推公式的遞推公式 4 9 16 25 364)2( 1221snnssnn 為慶祝為慶?!拔逦逡灰弧眹?guó)際勞動(dòng)節(jié),市政府決定在人民廣場(chǎng)上增國(guó)

10、際勞動(dòng)節(jié),市政府決定在人民廣場(chǎng)上增設(shè)一排燈花,其設(shè)計(jì)由以下圖形逐步演變而成,其中圓圈代表設(shè)一排燈花,其設(shè)計(jì)由以下圖形逐步演變而成,其中圓圈代表燈花中的燈泡,燈花中的燈泡,n代表第代表第n次演變過(guò)程,次演變過(guò)程,s代表第代表第n次演變后的燈次演變后的燈泡的個(gè)數(shù)。仔細(xì)觀察下列演變過(guò)程,當(dāng)泡的個(gè)數(shù)。仔細(xì)觀察下列演變過(guò)程,當(dāng)n=6時(shí),時(shí),s=_。94 2n1nn23ssSn=2sn-1+2Sn=3sn-1-2sn-2 某公共汽車線路上共有某公共汽車線路上共有15個(gè)車站(包括起點(diǎn)站和終點(diǎn)個(gè)車站(包括起點(diǎn)站和終點(diǎn)站)。在每個(gè)站上車的人中,恰好在以后各站下去一個(gè)。要站)。在每個(gè)站上車的人中,恰好在以后各站下

11、去一個(gè)。要使行駛過(guò)程中每位乘客都有座位,車上至少要備有多少個(gè)座使行駛過(guò)程中每位乘客都有座位,車上至少要備有多少個(gè)座位?位? 從表中可以看出車上人數(shù)最多是從表中可以看出車上人數(shù)最多是56人,所以車上人,所以車上至少要準(zhǔn)備至少要準(zhǔn)備56個(gè)座位。個(gè)座位。練習(xí)練習(xí)1 將一張長(zhǎng)方形的紙對(duì)折,可得到一條折痕,繼續(xù)對(duì)將一張長(zhǎng)方形的紙對(duì)折,可得到一條折痕,繼續(xù)對(duì)折,對(duì)折時(shí)每次折痕與上次的折痕保持平行,連續(xù)對(duì)折折,對(duì)折時(shí)每次折痕與上次的折痕保持平行,連續(xù)對(duì)折三次后,可得到條折痕,那么對(duì)折三次后,可得到條折痕,那么對(duì)折n次,可得到幾條次,可得到幾條折痕?折痕? Fn=2*Fn-1+1 var a,i,n:long

12、int;begin read(n); a:=1; for i:=2 to n do a:=2*a+1; writeln(a);end.var f,s,i,n,j:longint;begin read(n); f:=1; for i:=2 to n do begin s:=1; for j:=1 to i-1 do s:=s*2; f:=f+s; end; writeln(f);end.Fn=Fn-1+2n-1 var加入高精度運(yùn)算加入高精度運(yùn)算 a,b:array1.100 of integer; i,j,n:integer;begin readln(n); a100:=1 ;n=1時(shí)時(shí) b1

13、00:=1;20=1 for i:= 2 to n do begin for j:= 100 downto 1 do bj:=bj*2;遞推出遞推出2i-1 for j:= 100 downto 2 do if bj=10 then begin bj-1:=bj-1+bj div 10 ; bj:=bj mod 10; end; for j:= 100 downto 1 do begin aj:=aj+bj; if aj=10 then begin aj-1:=aj-1+aj div 10 ; aj:=aj mod 10; end; end; end; j:=1; while aj=0 do

14、j:=j+1; for i:= j to 100 do write(ai) ; end.練習(xí)練習(xí)2 如圖如圖,第一次把三角形剪去一個(gè)角后第一次把三角形剪去一個(gè)角后,圖中最多有四個(gè)圖中最多有四個(gè)角角,第二次再把新產(chǎn)生的角各剪一刀第二次再把新產(chǎn)生的角各剪一刀,如此下去如此下去,每一次每一次都是把新產(chǎn)生的角各剪一刀都是把新產(chǎn)生的角各剪一刀,則第則第n次剪好后次剪好后,圖中圖中最多最多有有多少個(gè)角多少個(gè)角? 4 6 10 18 34 Fn=Fn-1+2n-1var f,s,i,n,j:longint;begin read(n); f:=4; for i:=2 to n do begin s:=1; f

15、or j:=1 to i-1 do s:=s*2; f:=f+s; end; writeln(f);end.var a,b:array1.100 of longint; i,j,n:longint;begin readln(n); a100:=4 ; b100:=1; for i:= 2 to n do begin for j:= 100 downto 1 do bj:=bj*2; for j:= 100 downto 2 do if bj=10 then begin bj-1:=bj-1+bj div 10 ; bj:=bj mod 10; end; for j:= 100 downto 1

16、 do begin aj:=aj+bj; if aj=10 then begin aj-1:=aj-1+aj div 10 ; aj:=aj mod 10; end; end; end; j:=1; while aj=0 do j:=j+1; for i:= j to 100 do write(ai) ;end.練習(xí)練習(xí)3 下圖中把大正方形各邊平均分成了下圖中把大正方形各邊平均分成了5份,此時(shí)有份,此時(shí)有55個(gè)正個(gè)正方形。如果把正方形各邊平均分成方形。如果把正方形各邊平均分成n份,那么得到的正方形份,那么得到的正方形總數(shù)為多少?總數(shù)為多少?52+42+32+22+12=55n2+(n-1)2+

17、(n-2)2+22+1Fn=Fn-1+n2var a,i,n:longint;begin read(n); a:=1; for i:=2 to n do a:=a+i*i; writeln(a);end.Var 加入高精度運(yùn)算加入高精度運(yùn)算 a:array1.25 of longint; i,j,k,x,n:longint;begin readln(n); a25:=1;n=1時(shí)時(shí) for i:= 2 to n do begin x:=i*i; for j:= 25 downto 1 do begin aj:=aj+x mod 10; if aj=10 then begin aj:=aj-10

18、 ; aj-1:=aj-1+1; end; x:=x div 10; end; end; j:=1; while aj=0 do j:=j+1; for i:= j to 25 do write(ai); end.練習(xí)練習(xí)4 如圖,由等圓組成的一組圖中,第如圖,由等圓組成的一組圖中,第1個(gè)圖由個(gè)圖由1個(gè)圓組成,個(gè)圓組成,第第2個(gè)圖由個(gè)圖由7個(gè)圓組成,第個(gè)圓組成,第3個(gè)圖由個(gè)圖由19個(gè)圓組成,個(gè)圓組成,按照,按照這樣的規(guī)律排列下去,則第這樣的規(guī)律排列下去,則第9個(gè)圖形由個(gè)圖形由_個(gè)圓組成。個(gè)圓組成。 217可得遞推公式可得遞推公式:Fn= Fn-1+6*(n1)var a,i,n:longint

19、;begin read(n); a:=1; for i:=2 to n do a:=a+6*(i-1); writeln(a);end.var 加入高精度運(yùn)算加入高精度運(yùn)算 a:array1.50 of longint; i,j,k,x,n:longint;begin readln(n); a50:=1; for i:= 2 to n do begin x:=(i-1)*6; for j:= 50 downto 1 do begin x:=x+aj; aj:=x mod 10 ; x:=x div 10; end; end; j:=1; while aj=0 do j:=j+1; for i:

20、= j to 50 do write(ai);end.練習(xí)練習(xí)5 已知三角形已知三角形ABC的面積為的面積為10,延長(zhǎng)邊,延長(zhǎng)邊BC到點(diǎn)到點(diǎn)D,使,使BC=CD,延長(zhǎng)邊延長(zhǎng)邊CA到點(diǎn)到點(diǎn)E,使,使CA=AE,延長(zhǎng)邊,延長(zhǎng)邊AB到點(diǎn)到點(diǎn)F,使,使AB=BF,連,連結(jié)結(jié)DE,EF,FD,得到三角形得到三角形DEF,并記圖中陰影部分面積為并記圖中陰影部分面積為S1,此時(shí)我此時(shí)我們稱三角形們稱三角形ABC向外擴(kuò)展了一次向外擴(kuò)展了一次.求經(jīng)過(guò)求經(jīng)過(guò)N次擴(kuò)展后圖中陰影部分次擴(kuò)展后圖中陰影部分的面積的面積Sn.Fn=7*Fn-1 ( Fn為第為第n次擴(kuò)展后整個(gè)三角形的面積次擴(kuò)展后整個(gè)三角形的面積 )F0=1

21、0Sn=Fn-Fn-1const max=100;var f1,f2,s:array1.max of longint; i,j,k,l,n:longint;begin readln(n); f1max:=0 ; f1max-1:=1; F0=10 for i:= 1 to n do begin f2:=f1; k:=0; 7 for j:= max downto 1 do begin k:=k+f1j*7; f1j:=k mod 10; k:=k div 10; end; end; for i:= max downto 1 do 相減相減 begin if f1if2i then begin

22、f1i:=f1i+10; f1i-1:=f1i-1-1; end; si:=f1i-f2i; end; j:=1; while sj=0 do j:=j+1; for i:= j to max do write(si) ; end.Hanoi雙塔雙塔問(wèn)題問(wèn)題 給定給定A、B、C三根足夠長(zhǎng)的細(xì)柱,在三根足夠長(zhǎng)的細(xì)柱,在A柱上放有柱上放有2n個(gè)中個(gè)中 間有孔的圓盤(pán),共有間有孔的圓盤(pán),共有n個(gè)不同的尺寸,每個(gè)尺寸都有兩個(gè)相同個(gè)不同的尺寸,每個(gè)尺寸都有兩個(gè)相同的圓盤(pán),注意這兩個(gè)圓盤(pán)是不加區(qū)分的(下圖為的圓盤(pán),注意這兩個(gè)圓盤(pán)是不加區(qū)分的(下圖為n=3的情的情形)?,F(xiàn)要將這些圓盤(pán)移到形)?,F(xiàn)要將這些圓盤(pán)移

23、到C柱上,在移動(dòng)過(guò)程中可放在柱上,在移動(dòng)過(guò)程中可放在B柱柱上暫存。要求:上暫存。要求: (1)每次只能移動(dòng)一個(gè)圓盤(pán);)每次只能移動(dòng)一個(gè)圓盤(pán); (2)A、B、C三根細(xì)柱上的圓盤(pán)都要保持上小下大的順三根細(xì)柱上的圓盤(pán)都要保持上小下大的順序;序; 任務(wù):設(shè)任務(wù):設(shè)An為為2n個(gè)圓盤(pán)完成上述任務(wù)所需的最少移動(dòng)次個(gè)圓盤(pán)完成上述任務(wù)所需的最少移動(dòng)次數(shù),對(duì)于輸入的數(shù),對(duì)于輸入的n,輸出,輸出An。 輸入文件輸入文件hanoi.in為一個(gè)正整數(shù)為一個(gè)正整數(shù)n,表示在,表示在A柱上放有柱上放有2n個(gè)圓盤(pán)。個(gè)圓盤(pán)。 輸出文件輸出文件hanoi.out僅一行,包含一個(gè)正整數(shù)僅一行,包含一個(gè)正整數(shù),為完成上為完成上述任

24、務(wù)所需的最少移動(dòng)次數(shù)述任務(wù)所需的最少移動(dòng)次數(shù)An。 【樣例【樣例1】hanoi.inhanoi.out12【樣例【樣例2】hanoi.inhanoi.out26【限制】【限制】 對(duì)于對(duì)于50%的數(shù)據(jù),的數(shù)據(jù),1=n=25 對(duì)于對(duì)于100%的數(shù)據(jù),的數(shù)據(jù),1=n9 then begin 處理進(jìn)位處理進(jìn)位 aj+1:=aj+1+1; aj:=aj mod 10; end; end; f:=false; for i:=62 downto 1 do begin if ai0 then f:=true; if f then write(ai); end; close(input); close(outp

25、ut);end. 在上面的一些例題中,遞推過(guò)程中的某個(gè)狀態(tài)在上面的一些例題中,遞推過(guò)程中的某個(gè)狀態(tài)只與前面的一個(gè)狀態(tài)有關(guān),遞推關(guān)系并不復(fù)雜。如只與前面的一個(gè)狀態(tài)有關(guān),遞推關(guān)系并不復(fù)雜。如果在遞推中的某個(gè)狀態(tài)與前面的幾個(gè)狀態(tài)、甚至所果在遞推中的某個(gè)狀態(tài)與前面的幾個(gè)狀態(tài)、甚至所有狀態(tài)都有關(guān),就不容易找出遞推關(guān)系式,這就需有狀態(tài)都有關(guān),就不容易找出遞推關(guān)系式,這就需要我們對(duì)實(shí)際問(wèn)題進(jìn)行分析與歸納,從中找到突破要我們對(duì)實(shí)際問(wèn)題進(jìn)行分析與歸納,從中找到突破口,總結(jié)出遞推關(guān)系式???,總結(jié)出遞推關(guān)系式。 意大利著名數(shù)學(xué)家斐波那契在研究兔子繁殖問(wèn)題時(shí),發(fā)現(xiàn)意大利著名數(shù)學(xué)家斐波那契在研究兔子繁殖問(wèn)題時(shí),發(fā)現(xiàn)有這

26、樣一組數(shù):有這樣一組數(shù):1,1,2,3,5,8,13,其中從第三個(gè)數(shù),其中從第三個(gè)數(shù)起,每一個(gè)數(shù)都等于它前面兩上數(shù)的和?,F(xiàn)以這組數(shù)中的各個(gè)起,每一個(gè)數(shù)都等于它前面兩上數(shù)的和?,F(xiàn)以這組數(shù)中的各個(gè)數(shù)作為正方形的邊長(zhǎng)構(gòu)造如下正方形:數(shù)作為正方形的邊長(zhǎng)構(gòu)造如下正方形: 1 1 2 3 5 . 再分別依次從左到右取再分別依次從左到右取2個(gè)、個(gè)、3個(gè)、個(gè)、4個(gè)、個(gè)、5個(gè)正方形拼成個(gè)正方形拼成如下矩形并記為如下矩形并記為、若按此規(guī)律繼續(xù)作矩形,則序號(hào)為若按此規(guī)律繼續(xù)作矩形,則序號(hào)為的矩形周長(zhǎng)是。的矩形周長(zhǎng)是。 466 【問(wèn)題描述】【問(wèn)題描述】 一只蜜蜂在上圖所示的數(shù)字蜂房上爬動(dòng)一只蜜蜂在上圖所示的數(shù)字蜂房上

27、爬動(dòng),已知它只已知它只能從標(biāo)號(hào)小的蜂房爬到標(biāo)號(hào)大的相鄰蜂房能從標(biāo)號(hào)小的蜂房爬到標(biāo)號(hào)大的相鄰蜂房,現(xiàn)在問(wèn)你:現(xiàn)在問(wèn)你:蜜蜂從蜂房蜜蜂從蜂房M開(kāi)始爬到蜂房開(kāi)始爬到蜂房N(MN),有多少種爬),有多少種爬行路線?行路線? 【輸入格式】【輸入格式】 輸入輸入M,N的值。的值。(1=M,N0),求出鋪法總數(shù)的遞推公),求出鋪法總數(shù)的遞推公式。式。F(1)=1F(2)=2F(n)=F(n-2)+F(n-1) (n=3) 如果有如果有n元錢(qián)元錢(qián),每天去購(gòu)買下列三種商品之一每天去購(gòu)買下列三種商品之一:蔬菜要蔬菜要用用1元錢(qián)元錢(qián),豬肉要用豬肉要用2元錢(qián)元錢(qián),雞蛋要用元錢(qián)用雞蛋要用元錢(qián)用An表示把表示把這這n元錢(qián)

28、用完的所有可能的用法的總數(shù)元錢(qián)用完的所有可能的用法的總數(shù)如果第一天買蔬菜,則用去元錢(qián),還剩如果第一天買蔬菜,則用去元錢(qián),還剩n-1元錢(qián),元錢(qián), 這這n-1元錢(qián)的用法有元錢(qián)的用法有n-1種;種;如果第一天買豬肉,則用去元錢(qián),還剩如果第一天買豬肉,則用去元錢(qián),還剩n-元錢(qián),元錢(qián), 這這n-元錢(qián)的用法有元錢(qián)的用法有n-2種;種; 如果第一天買雞蛋,則用去元錢(qián),還剩如果第一天買雞蛋,則用去元錢(qián),還剩n-元錢(qián),元錢(qián), 這這n-元錢(qián)的用法有元錢(qián)的用法有n-2種;種; 所以,所以,n=n-1+2n-2 有排成一行的個(gè)方格,用紅、黃、藍(lán)三色涂每個(gè)格子,有排成一行的個(gè)方格,用紅、黃、藍(lán)三色涂每個(gè)格子,每格涂一色

29、,要求任何相鄰的格不同色,且首尾兩格也不同每格涂一色,要求任何相鄰的格不同色,且首尾兩格也不同色。問(wèn)有多少種涂法?色。問(wèn)有多少種涂法? 解:解:設(shè)共有設(shè)共有n種涂法,易見(jiàn)種涂法,易見(jiàn)1,2,3,且當(dāng),且當(dāng)時(shí),將時(shí),將個(gè)格子依次編號(hào)后,格與格(個(gè)格子依次編號(hào)后,格與格(n-1)不相鄰。)不相鄰。情形情形:格(:格(n-1)涂色與格不同,此時(shí)格只有一色可涂,且前()涂色與格不同,此時(shí)格只有一色可涂,且前(n-1)格滿足首尾兩格不同色,故有格滿足首尾兩格不同色,故有n-1種涂色方法。種涂色方法。情形情形:格(:格(n-1)涂色與格相同,此時(shí)格()涂色與格相同,此時(shí)格(n-2)與格涂色必然不同,)與格

30、涂色必然不同,不然,格(不然,格(n-1)與()與(n-2)相同,于是前()相同,于是前(n-2)格有)格有n-2種涂色法。因?yàn)楦穹N涂色法。因?yàn)楦衽c格不同色,有兩種涂色法,故共有與格不同色,有兩種涂色法,故共有n-2種涂色法。種涂色法。綜上,可得綜上,可得nn-1n-2()按前按前n-1格首尾關(guān)系討論格首尾關(guān)系討論 錯(cuò)位排列錯(cuò)位排列 五個(gè)人排成一列,重新站隊(duì)時(shí),各人都不站在原來(lái)的位置上,那么不同的五個(gè)人排成一列,重新站隊(duì)時(shí),各人都不站在原來(lái)的位置上,那么不同的站隊(duì)方式共有站隊(duì)方式共有( ) (A)60種種 (B)44種種 (C)36種種 (D)24種種 解:首先我們把人數(shù)推廣到解:首先我們把人

31、數(shù)推廣到n個(gè)人,即個(gè)人,即n個(gè)人排成一列,重新站隊(duì)時(shí),各人都不個(gè)人排成一列,重新站隊(duì)時(shí),各人都不站在原來(lái)的位置上。設(shè)滿足這樣的站隊(duì)方式有站在原來(lái)的位置上。設(shè)滿足這樣的站隊(duì)方式有An種,現(xiàn)在我們通過(guò)合理分步,恰當(dāng)種,現(xiàn)在我們通過(guò)合理分步,恰當(dāng)分類分類來(lái)來(lái)找出遞推關(guān)系:找出遞推關(guān)系: 第一步第一步:第一個(gè)人不站在原來(lái)的第一個(gè)位置,有:第一個(gè)人不站在原來(lái)的第一個(gè)位置,有n-1種站法。種站法。 第二步第二步:假設(shè)第一個(gè)人站在第:假設(shè)第一個(gè)人站在第2個(gè)位置,則第二個(gè)人的站法又可以分為兩類:個(gè)位置,則第二個(gè)人的站法又可以分為兩類:第一類第一類,第二個(gè)人恰好站在第一個(gè)位置,則余下的,第二個(gè)人恰好站在第一個(gè)位

32、置,則余下的 n-2個(gè)人有個(gè)人有An-2種站隊(duì)方式;種站隊(duì)方式;第二第二類類,第二個(gè)人不站在第一個(gè)位置,則就是第二個(gè)人不站在第一個(gè)位置,第三個(gè)人不,第二個(gè)人不站在第一個(gè)位置,則就是第二個(gè)人不站在第一個(gè)位置,第三個(gè)人不站在第三個(gè)位置,第四個(gè)人不站在第四個(gè)位置,站在第三個(gè)位置,第四個(gè)人不站在第四個(gè)位置,第,第n個(gè)人不站在第個(gè)人不站在第n個(gè)位置,個(gè)位置,所以有所以有An-1種站隊(duì)方式。種站隊(duì)方式。 由分步計(jì)數(shù)原理和分類計(jì)數(shù)原理,我們便得到了數(shù)列由分步計(jì)數(shù)原理和分類計(jì)數(shù)原理,我們便得到了數(shù)列 的遞推關(guān)系式:的遞推關(guān)系式: ,顯然,顯然 ,再由遞推關(guān)系有,再由遞推關(guān)系有,na)(1(12nnnaana1

33、, 021aa9,243aa445a 在書(shū)架上放有編號(hào)為在書(shū)架上放有編號(hào)為1 ,2 ,n的的n本書(shū)?,F(xiàn)將本書(shū)。現(xiàn)將n本書(shū)全部取下然后再放回去,當(dāng)放回去時(shí)要求每本書(shū)本書(shū)全部取下然后再放回去,當(dāng)放回去時(shí)要求每本書(shū)都不能放在原來(lái)的位置上。都不能放在原來(lái)的位置上。 例如:例如:n = 3時(shí):時(shí): 原來(lái)位置為:原來(lái)位置為:1 2 3 放回去時(shí)只能為:放回去時(shí)只能為:3 1 2 或或 2 3 1 這兩種這兩種 問(wèn)題:求當(dāng)問(wèn)題:求當(dāng)n = 5時(shí)滿足以上條件的放法共有多少時(shí)滿足以上條件的放法共有多少種?種?染色問(wèn)題染色問(wèn)題 用用4種不同顏色涂四邊形的種不同顏色涂四邊形的4個(gè)頂點(diǎn),要求每點(diǎn)染一種顏個(gè)頂點(diǎn),要求每

34、點(diǎn)染一種顏色,相鄰的頂點(diǎn)染不同的顏色,則不同的染色方法有色,相鄰的頂點(diǎn)染不同的顏色,則不同的染色方法有( )(A)84種種(B)72種種(C)48種種(D)24種種AVar i,j,k,m,n:longint; a:array1.10 of longint;function jc(k:integer):longint;求求K! var i,j:longint; begin j:=1; for i:= 2 to k do j:=j*i; jc:=j; end;begin readln(n,m);n是頂點(diǎn)數(shù),是頂點(diǎn)數(shù),m是顏色數(shù)是顏色數(shù) a3:=jc(m) div jc(m-3);初值初值 for

35、 i:= 4 to n do begin j:=1; for k:= 1 to i-1 do j:=j*(m-1); ai:=m*j-ai-1 ; 遞推公式遞推公式 end; writeln(an);end.)!3(!33mmAam1) 1(ima3:=m*(m-1)*(m-2)如圖,一個(gè)地區(qū)分為如圖,一個(gè)地區(qū)分為5個(gè)行政區(qū)域,現(xiàn)給地圖著色,要求個(gè)行政區(qū)域,現(xiàn)給地圖著色,要求相鄰區(qū)域不得使用同一顏色,現(xiàn)有四種顏色可供選擇,則相鄰區(qū)域不得使用同一顏色,現(xiàn)有四種顏色可供選擇,則不同的著色方法共有不同的著色方法共有 種。種。 圖中圖中2、3、4、5四個(gè)區(qū)域圍成一個(gè)四邊形,因此可以四個(gè)區(qū)域圍成一個(gè)四邊

36、形,因此可以把它們看成是一個(gè)四邊形的把它們看成是一個(gè)四邊形的4個(gè)頂點(diǎn),而區(qū)域個(gè)頂點(diǎn),而區(qū)域1就是這個(gè)四就是這個(gè)四邊形對(duì)角線的交點(diǎn)。邊形對(duì)角線的交點(diǎn)。 第一步,先涂區(qū)域第一步,先涂區(qū)域1,有,有4種涂法。種涂法。 第二步,由于區(qū)域第二步,由于區(qū)域1跟其余四個(gè)區(qū)域都相鄰,因此涂跟其余四個(gè)區(qū)域都相鄰,因此涂1的顏色不能用來(lái)涂其余的四個(gè)區(qū)域,因此第二步相當(dāng)于用的顏色不能用來(lái)涂其余的四個(gè)區(qū)域,因此第二步相當(dāng)于用3種顏色來(lái)涂一個(gè)四邊形的四個(gè)頂點(diǎn),不難得出種顏色來(lái)涂一個(gè)四邊形的四個(gè)頂點(diǎn),不難得出 所以,所以,由分步計(jì)數(shù)原理,得出共有由分步計(jì)數(shù)原理,得出共有 種涂法。種涂法。 1123nnnaa6333 Aa

37、1823334aa72184 某城市在中心廣場(chǎng)建造一個(gè)花圃,花圃分成某城市在中心廣場(chǎng)建造一個(gè)花圃,花圃分成6個(gè)部分個(gè)部分(如如圖圖),現(xiàn)要栽種,現(xiàn)要栽種4種不同顏色的花,每部分栽種一種且相鄰部種不同顏色的花,每部分栽種一種且相鄰部分不能栽種同樣顏色的花,不同的栽種方法共有分不能栽種同樣顏色的花,不同的栽種方法共有 種。種。 1206333 Aa1823334aa30184823445aa430=120傳球傳球問(wèn)題問(wèn)題 4個(gè)人進(jìn)行籃球訓(xùn)練,互相傳球接球,要求每個(gè)人接球個(gè)人進(jìn)行籃球訓(xùn)練,互相傳球接球,要求每個(gè)人接球后馬上傳給別人,開(kāi)始由甲發(fā)球,并作為第一次傳球,第后馬上傳給別人,開(kāi)始由甲發(fā)球,并作

38、為第一次傳球,第五次傳球后,球又回到甲手中,問(wèn)有多少種傳球方式?五次傳球后,球又回到甲手中,問(wèn)有多少種傳球方式?60分析分析 :設(shè)第設(shè)第n次傳球后,球又回到甲手中的傳球方式有次傳球后,球又回到甲手中的傳球方式有an種種??梢韵胂笄啊?梢韵胂笄皀-1次傳球,如次傳球,如果每一次傳球都任選其他三人中的一人進(jìn)行接球,則每次傳球都有果每一次傳球都任選其他三人中的一人進(jìn)行接球,則每次傳球都有3種可能,由乘法原種可能,由乘法原理,共有理,共有 333=3 n-1 種傳球方法。這些傳球方式可以分為兩類種傳球方法。這些傳球方式可以分為兩類: 一類是第一類是第n-1次恰好傳到甲手中,這有次恰好傳到甲手中,這有a

39、n-1種傳法,它們不符合要求,因?yàn)檫@樣第種傳法,它們不符合要求,因?yàn)檫@樣第n次無(wú)法再把球傳給甲;次無(wú)法再把球傳給甲; 另一類是第另一類是第n-1次傳球,球不在甲手中,第次傳球,球不在甲手中,第n次持球人再將球傳給甲,有次持球人再將球傳給甲,有an種傳法。種傳法。 根據(jù)加法原理,有根據(jù)加法原理,有an-1+an=3 n-1 。 由于甲是發(fā)球者,一次傳球后球又回到甲手中的傳球方式是不存在的,所以由于甲是發(fā)球者,一次傳球后球又回到甲手中的傳球方式是不存在的,所以a1=0。 利用遞推關(guān)系可以得到利用遞推關(guān)系可以得到 a2=3-0=3, a3=33-3=6, a4=333-6=21, a5=3333-2

40、1=60。 這說(shuō)明經(jīng)過(guò)這說(shuō)明經(jīng)過(guò)5次傳球后,球仍回到甲手中的傳球方法有次傳球后,球仍回到甲手中的傳球方法有60種。種。var a:array1.100 of longint; n,m,i,j:longint;begin readln(n,m); a1:=0; j:=1; for i:= 2 to m do begin j:=j*(n-1); 先求出先求出(n-1)i-1 ai:=j-ai-1; end; writeln(am);end.var 加入高精度運(yùn)算加入高精度運(yùn)算 a:array1.100,1.100 of integer; s:array1.100 of integer; i,j,t

41、,k,n,m:longint;begin readln(n,m); a1,100:=0 ; s100:=1; for i:= 2 to m do begin for j:= 100 downto 1 do sj:=sj*(n-1); for j:= 100 downto 1 do if sj9 then begin sj-1:=sj-1+sj div 10; sj:= sj mod 10; end; for j:= 100 downto 1 do ai,j:=sj-ai-1,j; for j:= 100 downto 1 do if ai,j0 then begin ai,j-1:=ai,j-

42、1-1; ai,j:=ai,j+10; end; end; j:=1; while am,j=0 do j:=j+1; for i:= j to 100 do write(am,i);end.凸多邊形劃分凸多邊形劃分 在一個(gè)凸多邊形中,通過(guò)若干條互不相交的對(duì)角線,把這在一個(gè)凸多邊形中,通過(guò)若干條互不相交的對(duì)角線,把這個(gè)凸多邊形剖分成了若干個(gè)三角形?,F(xiàn)在的任務(wù)是根據(jù)輸入的個(gè)凸多邊形剖分成了若干個(gè)三角形?,F(xiàn)在的任務(wù)是根據(jù)輸入的凸多邊形的邊數(shù),求不同剖分的方案數(shù)凸多邊形的邊數(shù),求不同剖分的方案數(shù)Cn。比如當(dāng)。比如當(dāng)n=5時(shí),有時(shí),有如下如下5種不同的方案,所以種不同的方案,所以C5=5。輸入文件輸入

43、文件14.in:一個(gè)正整數(shù),表示凸多邊形的邊數(shù)。:一個(gè)正整數(shù),表示凸多邊形的邊數(shù)。(n=21)輸出文件輸出文件14.out:一個(gè)正整數(shù),表示方案總數(shù)。:一個(gè)正整數(shù),表示方案總數(shù)。如圖所示,我們以如圖所示,我們以p1pn這條邊為基準(zhǔn)邊,再找這條邊為基準(zhǔn)邊,再找pk來(lái)構(gòu)成三角形,來(lái)構(gòu)成三角形,則原凸則原凸n邊形被剖解成了邊形被剖解成了p1pkpn和兩個(gè)凸多邊形,其中一個(gè)是和兩個(gè)凸多邊形,其中一個(gè)是由由p1,p2,pk構(gòu)成的凸構(gòu)成的凸k邊形,另一個(gè)是由邊形,另一個(gè)是由pk,pk+1,pn構(gòu)成的凸構(gòu)成的凸n-k+1邊形,根據(jù)乘法原理,選擇邊形,根據(jù)乘法原理,選擇pk這個(gè)頂點(diǎn)的分解方案為這個(gè)頂點(diǎn)的分解方

44、案為 種。而種。而k可以選可以選2到到n-1,所以根據(jù)加法原理,得出總,所以根據(jù)加法原理,得出總的方案數(shù)為的方案數(shù)為 注意,就這個(gè)遞推關(guān)系而言,臨界值應(yīng)為注意,就這個(gè)遞推關(guān)系而言,臨界值應(yīng)為C2=1,而不是,而不是C3=1,否則遞推關(guān)系就得不到正確解,這與原問(wèn)題的實(shí)際情況,否則遞推關(guān)系就得不到正確解,這與原問(wèn)題的實(shí)際情況可能不符(即兩邊形),其實(shí)這只是理解上的差異可能不符(即兩邊形),其實(shí)這只是理解上的差異1knkCC1knkCC12nknCP1PnP2P3PkPn-1Pn-2const max=21;var c:array2.max of longint; n,i,k:integer; to

45、tal:longint;begin readln(n); c2:=1; for i:=3 to n do begin ci:=0; for k:=2 to i-1 do ci:=ci+ck*ci-k+1; end; writeln(cn);end.求路徑總數(shù)求路徑總數(shù)下圖是某居民小區(qū)道路圖,小明每天由家(點(diǎn))到學(xué)校(點(diǎn)),下圖是某居民小區(qū)道路圖,小明每天由家(點(diǎn))到學(xué)校(點(diǎn)),他只沿道路向上或向右行走,那么他最多有()天走不同線路?他只沿道路向上或向右行走,那么他最多有()天走不同線路?1015212836 454 1020 355684120 1655 1535 70126 210 330

46、495var i,j,n,m:integer; a:array1.20,1.20 of longint;begin read(n,m); fillchar(a,sizeof(a),0); for i:=1 to n do aI,1:=1; for j:=1 to m do a1,j:=1; for i:=2 to n do for j:=2 to m do aI,j:=aI,j-1+ai-1,j; writeln(an,m);end.要想到達(dá)坐標(biāo)為(要想到達(dá)坐標(biāo)為(i,j)的頂點(diǎn)的話,必定)的頂點(diǎn)的話,必定要經(jīng)過(guò)坐標(biāo)為(要經(jīng)過(guò)坐標(biāo)為(i-1,j)的頂點(diǎn)或坐標(biāo)為)的頂點(diǎn)或坐標(biāo)為(i,j-1)的頂

47、點(diǎn),設(shè))的頂點(diǎn),設(shè)a(I,j)表示從點(diǎn)表示從點(diǎn)A到頂點(diǎn)到頂點(diǎn)(I,j)的路徑總條數(shù),則的路徑總條數(shù),則a(I,j)=a(I,j-1)+a(i-1,j)輸入:輸入:5 9輸出:輸出:495街道路徑街道路徑 設(shè)有一個(gè)設(shè)有一個(gè)NM(1=N=50,1=M=50)的街)的街道,規(guī)定行人從道,規(guī)定行人從A(1,1)出發(fā),在街道上出發(fā),在街道上只能向東或北行走只能向東或北行走。 若在此街道中,設(shè)置一個(gè)矩形障礙區(qū)域(包括圍住該若在此街道中,設(shè)置一個(gè)矩形障礙區(qū)域(包括圍住該區(qū)域的的街道)不讓行人通行,如上圖中用區(qū)域的的街道)不讓行人通行,如上圖中用“”表示的表示的部分。此矩形障礙區(qū)域用部分。此矩形障礙區(qū)域用2對(duì)

48、頂點(diǎn)坐標(biāo)給出,如上圖中的對(duì)頂點(diǎn)坐標(biāo)給出,如上圖中的2對(duì)頂點(diǎn)坐標(biāo)為對(duì)頂點(diǎn)坐標(biāo)為(2,2),(8,4),此時(shí)從,此時(shí)從A出發(fā)到達(dá)出發(fā)到達(dá)B的路徑的路徑有兩條。有兩條。 現(xiàn)給出現(xiàn)給出N、M,同時(shí)再給出此街道中的矩形障礙區(qū)域的,同時(shí)再給出此街道中的矩形障礙區(qū)域的2對(duì)頂點(diǎn)坐標(biāo)對(duì)頂點(diǎn)坐標(biāo)(x1,y1),(,(x2,y2),請(qǐng)求出此時(shí)所有從),請(qǐng)求出此時(shí)所有從A出出發(fā)到達(dá)發(fā)到達(dá)B的路徑的條數(shù)。的路徑的條數(shù)。 由于在街上只能向東或北方向行走,因此要想達(dá)到坐標(biāo)由于在街上只能向東或北方向行走,因此要想達(dá)到坐標(biāo)為(為(i,j)的頂點(diǎn)的話,必定要經(jīng)過(guò)坐標(biāo)為()的頂點(diǎn)的話,必定要經(jīng)過(guò)坐標(biāo)為(i-1,j)的頂點(diǎn))的頂點(diǎn)或

49、坐標(biāo)為(或坐標(biāo)為(i,j-1)的頂點(diǎn),假設(shè)從起始頂點(diǎn)到達(dá)坐標(biāo)為)的頂點(diǎn),假設(shè)從起始頂點(diǎn)到達(dá)坐標(biāo)為(i,j)的頂點(diǎn)的路徑總數(shù)為)的頂點(diǎn)的路徑總數(shù)為ai,j,則,則ai,j= ai-1,j +ai,j-1。因此我們可以采用逐。因此我們可以采用逐行行遞推的方法來(lái)求出從起遞推的方法來(lái)求出從起始頂點(diǎn)到達(dá)任意一個(gè)頂點(diǎn)的路徑總數(shù)。始頂點(diǎn)到達(dá)任意一個(gè)頂點(diǎn)的路徑總數(shù)。var n,m,i,j,x1,x2,y1,y2:integer; a:array1.50,1.50 of longint; b:array1.50,1.50 of boolean;begin readln(n,m);行列要分清行列要分清 readl

50、n(x1,y1,x2,y2); fillchar(a,sizeof(a),0) ; fillchar(b,sizeof(b),true); for i:=y1 to y2 do for j:=x1 to x2 do bi,j:=false; for i:=1 to m do begin if not(bi,1) then break ; ai,1:=1; end; for j:=1 to n do begin if not(b1,j) then break ; a1,j:=1; end; for i:=2 to m do for j:=2 to n do if bi,j then ai,j:=

51、ai-1,j+ai,j-1; write(am,n);end.有可能障礙區(qū)域靠邊有可能障礙區(qū)域靠邊如輸入如輸入9 52 8 4應(yīng)輸出應(yīng)輸出11 Var加入高精度運(yùn)算加入高精度運(yùn)算 n,m,i,j,x1,x2,y1,y2,k,g:integer; a:array1.50,1.50,1.30 of longint; b:array1.50,1.50 of boolean;begin readln(n,m); readln(x1,y1,x2,y2); fillchar(a,sizeof(a),0); fillchar(b,sizeof(b),true); for i:=y1 to y2 do for

52、 j:=x1 to x2 do bi,j:=false; for i:=1 to m do begin if not(bi,1) then break; ai,1,1:=1; end; for j:=1 to n do begin if not(b1,j) then break; a1,j,1:=1; end; for i:=2 to m do for j:=2 to n do if bi,j then begin g:=0; for k:=1 to 30 do begin ai,j,k:=ai-1,j,k+ai,j-1,k+g; g:=ai,j,k div 10; ai,j,k:=ai,j,

53、k mod 10; end; end; j:=30; for i:=30 downto 1 do if am,n,i=0 then j:=j-1; for i:=j downto 1 do write(am,n,i);end.過(guò)河卒過(guò)河卒 如圖,如圖,A A 點(diǎn)有一個(gè)過(guò)河卒,需要走到目標(biāo)點(diǎn)有一個(gè)過(guò)河卒,需要走到目標(biāo) B B 點(diǎn)。卒行走規(guī)則:可以向點(diǎn)。卒行走規(guī)則:可以向下、或者向右。同時(shí)在棋盤(pán)上的任一點(diǎn)有一個(gè)對(duì)方的馬(如上圖的下、或者向右。同時(shí)在棋盤(pán)上的任一點(diǎn)有一個(gè)對(duì)方的馬(如上圖的C C點(diǎn)),點(diǎn)),該馬所在的點(diǎn)和所有跳躍一步可達(dá)的點(diǎn)稱為對(duì)方馬的控制點(diǎn)。例如上圖該馬所在的點(diǎn)和所有跳躍一步可達(dá)的點(diǎn)

54、稱為對(duì)方馬的控制點(diǎn)。例如上圖 C C 點(diǎn)上的馬可以控制點(diǎn)上的馬可以控制 9 9 個(gè)點(diǎn)(圖中的個(gè)點(diǎn)(圖中的P1P1,P2 P8 P2 P8 和和 C C)。卒不能通過(guò)對(duì)方)。卒不能通過(guò)對(duì)方馬的控制點(diǎn)。棋盤(pán)用坐標(biāo)表示,馬的控制點(diǎn)。棋盤(pán)用坐標(biāo)表示,A A 點(diǎn)(點(diǎn)(0 0,0 0)、)、B B 點(diǎn)(點(diǎn)(n,mn,m)( ( n,mn,m為不超過(guò)為不超過(guò) 2020的整數(shù)的整數(shù)) ),同樣馬的位置坐標(biāo)是需要給出的(約定,同樣馬的位置坐標(biāo)是需要給出的(約定: CA: CA,同時(shí),同時(shí)CBCB)。)?,F(xiàn)在要求你計(jì)算出卒從現(xiàn)在要求你計(jì)算出卒從 A A 點(diǎn)能夠到達(dá)點(diǎn)能夠到達(dá) B B 點(diǎn)的路徑的條數(shù)。點(diǎn)的路徑的條數(shù)

55、。 輸入文件輸入文件5.in5.in,只有一行,共,只有一行,共4 4個(gè)正整數(shù),前個(gè)正整數(shù),前2 2個(gè)數(shù)表示個(gè)數(shù)表示B B點(diǎn)的坐標(biāo),后點(diǎn)的坐標(biāo),后2 2個(gè)數(shù)表示對(duì)方馬的坐標(biāo)。個(gè)數(shù)表示對(duì)方馬的坐標(biāo)。 輸出文件輸出文件5.out5.out,只有一行,一個(gè)整數(shù)(表示路徑的條數(shù))。,只有一行,一個(gè)整數(shù)(表示路徑的條數(shù))。 樣例樣例: : 輸入輸入 6 6 3 2 6 6 3 2 輸出輸出 1717分析分析:要到達(dá)棋盤(pán)上的一個(gè)點(diǎn),只能從左邊過(guò)來(lái)或是從上面要到達(dá)棋盤(pán)上的一個(gè)點(diǎn),只能從左邊過(guò)來(lái)或是從上面下來(lái),所以根據(jù)加法原理,到達(dá)某一點(diǎn)的路徑數(shù)目,等于下來(lái),所以根據(jù)加法原理,到達(dá)某一點(diǎn)的路徑數(shù)目,等于到達(dá)其

56、相鄰上、左兩點(diǎn)的路徑數(shù)目之和,因此我們可以使到達(dá)其相鄰上、左兩點(diǎn)的路徑數(shù)目之和,因此我們可以使用逐行遞推的方法來(lái)求出從起始頂點(diǎn)到終點(diǎn)的路徑數(shù)目,用逐行遞推的方法來(lái)求出從起始頂點(diǎn)到終點(diǎn)的路徑數(shù)目,如果有障礙,只要將到達(dá)該點(diǎn)的路徑數(shù)目設(shè)置為即可。如果有障礙,只要將到達(dá)該點(diǎn)的路徑數(shù)目設(shè)置為即可。const x1:array1.8of integer=(2,2,1,-1,-2,-2,-1,1); y1:array1.8of integer=(1,-1,-2,-2,-1,1,2,2);var b:array0.20,0.20 of boolean; i,j,x,y,k,p,n,m:integer; a:

57、array0.20,0.20 of integer;beginreadln(n,m,x,y); fillchar(b,sizeof(b),true); fillchar(a,sizeof(a),0);bx,y:=false;for i:=1 to 8 do if (x+x1i=0)and(x+x1i=0)and(y+y1i=0)and(x+x1i=0)and(y+y1i1) do j:=j-1; for i:=j downto 1 do write(an,m,i); end.傳球游戲傳球游戲【問(wèn)題描述】【問(wèn)題描述】 上體育課的時(shí)候,小蠻的老師經(jīng)常帶著同學(xué)們一起做游戲。這次,上體育課的時(shí)候,小蠻

58、的老師經(jīng)常帶著同學(xué)們一起做游戲。這次,老師帶著同學(xué)們一起做傳球游戲。游戲規(guī)則是這樣的:老師帶著同學(xué)們一起做傳球游戲。游戲規(guī)則是這樣的:n個(gè)同學(xué)站成一個(gè)個(gè)同學(xué)站成一個(gè)圓圈,其中的一個(gè)同學(xué)手里拿著一個(gè)球,當(dāng)老師吹哨子時(shí)開(kāi)始傳球,每圓圈,其中的一個(gè)同學(xué)手里拿著一個(gè)球,當(dāng)老師吹哨子時(shí)開(kāi)始傳球,每個(gè)同學(xué)可以把球傳給自己左右的兩個(gè)同學(xué)中的一個(gè)(左右任意),當(dāng)老個(gè)同學(xué)可以把球傳給自己左右的兩個(gè)同學(xué)中的一個(gè)(左右任意),當(dāng)老師再次吹哨子時(shí),傳球停止,此時(shí),拿著球沒(méi)有傳出去的那個(gè)同學(xué)就是師再次吹哨子時(shí),傳球停止,此時(shí),拿著球沒(méi)有傳出去的那個(gè)同學(xué)就是敗者,要給大家表演一個(gè)節(jié)目。敗者,要給大家表演一個(gè)節(jié)目。 聰明的

59、小蠻提出了一個(gè)有趣的問(wèn)題:聰明的小蠻提出了一個(gè)有趣的問(wèn)題:有多少種不同的傳球方法可以有多少種不同的傳球方法可以使得從小蠻手里開(kāi)始傳的球,傳了使得從小蠻手里開(kāi)始傳的球,傳了m次后,又回到小蠻手里。次后,又回到小蠻手里。兩種傳球兩種傳球方法被視為不同的方法,當(dāng)且僅當(dāng)這兩種方法中,接到球的同學(xué)按接球方法被視為不同的方法,當(dāng)且僅當(dāng)這兩種方法中,接到球的同學(xué)按接球順序組成的序列是不同的。比如有順序組成的序列是不同的。比如有3個(gè)同學(xué)個(gè)同學(xué)1號(hào)、號(hào)、2號(hào)、號(hào)、3號(hào),并假設(shè)小蠻號(hào),并假設(shè)小蠻為一號(hào),球傳了為一號(hào),球傳了3次后回到小蠻手里的方式有次后回到小蠻手里的方式有 1- 2- 3- 1 和和 1- 3-

60、2- 1 ,共,共2種。種?!据斎搿俊据斎搿?輸入文件輸入文件ball.in共一行,有兩個(gè)用空格隔開(kāi)的整數(shù)共一行,有兩個(gè)用空格隔開(kāi)的整數(shù)n,m(3=n=30,1=m=30)。)?!据敵觥俊据敵觥?輸出文件輸出文件ball.out共一行,有一個(gè)整數(shù),表示符合題意的共一行,有一個(gè)整數(shù),表示符合題意的方法數(shù)。方法數(shù)?!据斎胼敵鰳永俊据斎胼敵鰳永?ball.in 3 ball.out 32【限制】【限制】 40%的數(shù)據(jù)滿足:的數(shù)據(jù)滿足:3=n=30,1=m=20 100%的數(shù)據(jù)滿足:的數(shù)據(jù)滿足:3=n=30,1=m=30分析:分析: 設(shè)設(shè)f(i,k)表示經(jīng)過(guò)表示經(jīng)過(guò)k次傳球到編號(hào)為次傳球到編號(hào)為i

溫馨提示

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

評(píng)論

0/150

提交評(píng)論