39級台階
小明剛剛看完電影《第39級台階》。離開電影院的時候,他數了數禮堂前的台階數,恰好是39級!
站在台階前,他突然又想著乙個問題:
如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?
請你利用計算機的優勢,幫助小明尋找答案。
#include
#include
using namespace std;
int n,s;
int f(int q,int t)
if(q>0)t++; //有台階可走
if(q>=2) return f(q-1,t)+f(q-2,t); //選擇走一步或者走兩步
if(t%2==0) s++; //q=0,1共走偶數步,方法加1
return 0;
int main()
while(scanf("%d",&n)!=eof){
s=0;
f(n,0);
printf("%d\n",s);
return 0;
出棧順序
x星球特別講究秩序,所有道路都是單行線。
乙個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。
路邊有個死胡同,只能容一輛車通過,是臨時的檢查站,如圖所示。
x星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可能仔細檢查。
如果車輛進入檢查站和離開的次序可以任意交錯。那麼,該車隊再次上路後,可能的次序有多少種?
為了方便起見,假設檢查站可容納任意數量的汽車。
顯然,如果車隊只有1輛車,可能次序1種;2輛車可能次序2種;3輛車可能次序5種。
#include
int f(int n,int m)
if(n==0)
return 1;
if(m==0)
return f(n-1,1);
return
f(n,m-1)+f(n-1,m+1);
int main()
int a;
while(scanf("%d",&a)!=eof){
printf("%d\n",f(a,0));
return 0;
遞迴 第39級台階
小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級!站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?請你利用計算機的優勢,幫助小明尋...
第39級台階問題(遞迴演算法)
小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級 站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?請你利用計算機的優勢,幫助小明尋...
演算法訓練 第39級台階(遞迴)
小明剛剛看完電影 第 39 級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是 39 級!站在台階前,他突然又想著乙個問題 如果我每一步只能邁上 1 個或 2 個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完 39 級台階,有多少種不同的上法呢?請你利用計算...