1. 程式人生 > >第三十九級臺階(回溯)

第三十九級臺階(回溯)

題目標題: 第39級臺階

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

站在臺階前,他突然又想著一個問題:

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


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

要求提交的是一個整數。

注意:不要提交解答過程,或其它的輔助說明文字。

有_______種不同的上法。(Ans:51167078)

用遞歸回溯不斷模擬1、2兩步上臺階的過程。

#include <bits/stdc++.h>
int cnt=0;
void dfs(int step,int taijie){
    if(taijie>39)
        return;
    if(taijie==39){
        if(step%2==0)
        cnt++;
    return;
    }

    dfs(step+1,taijie+1);
    dfs(step+1,taijie+2);
return;
}

int main(void)
{
    dfs(0,0);
    printf("%d",cnt);
return 0;
}