第39級台階

2021-10-02 19:19:03 字數 1026 閱讀 6391

第39級台階

小明剛剛看完電影《第39級台階》,離開電影院的時候,他數了數禮堂前的台階數,恰好是39級!

站在台階前,他突然又想著乙個問題:

如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?

請你利用計算機的優勢,幫助小明尋找答案。

題目分析:

1.多種情況使用遞迴的方式

2.解決減過多的問題,設定結點:當小於0,直接return上一層

3.最後的結點,當階梯走完,驗證偶數步才++,否者還是需要return上一層

4.兩種情況交融配合的方式,將一階和二階寫在一起

public static void walk(int sta, int step) 

if(sta==0)

return;

}walk(sta-1,step+1);

walk(sta-2,step+1);

}

方法2

解題思路:一開始我直接想用斐波那契數列算第39項,再除以2,但是39項並不是偶數,說明是左腳踏上39階,還是右腳踏上39階的方案數是不相等,其實他們本來也不對稱。後來我通過定義乙個二維陣列arr[a][b](b=0,1)來解決左右腳問題,arr[a][b]的含義分為arr[a][0] 左腳踏上第a階的方案數,arr[a][1]為右腳踏上第a階的方案數,所以可以推得以下等式:

arr[a][0] = arr[a-1][1] + arr[a-2][1]

arr[a][1] = arr[a-1][0] + arr[a-2][0]

#include

using

namespace std;

long

long arr[40]

[2];

intmain()

cout << arr[39]

[1];

return0;

}

第39級台階

小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級 站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?請你利用計算機的優勢,幫助小明尋...

第39級台階

畫個圖,找個遞迴出口,應該不難。小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級 站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?...

第39級台階

小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級 站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?請你利用計算機的優勢,幫助小明尋...