ACM第三次練習 1010

2021-07-11 16:13:29 字數 506 閱讀 4019

題意:有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?

思路:搜尋題的感覺,前面幾個數為1,1,2,3,第五個可以這樣考慮:有些走法是和到第四個一樣的,只是最後加了一步,這樣f(5)=f(4)+x,x表示其他的走法,到第五級時不是走兩步就是一步,一步剛才已經考慮過了,就是f(4),而最後是走兩步的是在第**開始的,到第**的走法為f(3),所以f(5)=f(4)+f(3);後面的類似。所以是斐波那契數列f(n)=f(n-1)+f(n-2)。

感想:最後還是用遞推做的~

**:#include

intmain() 

;  scanf("%d",&n); 

a[1]=1; 

a[2]=1; 

for(i=3;i<=40;i++) 

a[i]=a[i-1]+a[i-2]; 

while(n--) 

return 1; }

ACM第三次練習 1010

題意 從1走到2有最短路為定值,注意到題目不是求最短路有多少條,而是,假如有一條a到b的路,而b到家的最短路比a到家的最短路要小,那麼就可以從a到b,b到家,這可以算作一條路可走。求共有多少條這樣的路從1點到家2。思路 先用 digkstra演算法求出各點到2 1的最短距離 同時存貯其它點到2的最短...

ACM第三次練習 1001

題意 給出序列a 1 a 2 a 3 a n 計算子串行的最大總和。思路 最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。方法是 只要前i項和還沒有小於0子串行就一直往後擴充套件,否則丟棄之前的子串行開始新的子串行,同時記錄各個子串行的和,最後取他們中的最大值。感想 第一道動態規劃題,感覺...

ACM第三次練習 1002

題意 求兩個字串的最長公共子串行。思路 動態的方程在第乙個元素的相等的時,dp 0 0 dp 1 1 1,天哪,這肯定就會出錯了。在處理時可以選擇字元的讀取從第乙個位置開始,或者把 i 號字元的狀態儲存到i 1號位置去,這樣就從1號開始處理了,判定是就是 s1 i 1 s1 j 1 感想 弄了很久,...