第39級台階

2021-06-18 22:27:59 字數 1230 閱讀 6432

小明剛剛看完電影《第39級台階》,離開電影院的時候,

他數了數禮堂前的台階數,恰好是39級!

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

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

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

#includeint step;//台階數

//int pace;//步數

int plan;//方案數

void count(int layer, int pace)

return ;

} if(layer > step)//注意這裡的結束條件,如果在上倒數第二個台階時 邁了兩步 那就不成立

return;

count(layer + 1 ,pace + 1);

count(layer + 2, pace + 1);

}int main()

方法1:遞迴

方法2:排列組合

**:完全轉化為數學問題,實際上就是:

n = c(38, 1) + (36, 3) + ... + c(20, 19)最多38步,最少20步,組合是38步的情況下找偶數步

# include int c(int m, int n)

return cmn;

}int main(void)

printf("%d\n", n);

return 0;

}

方法3:fabonacci數列

**:分析:構造乙個表示式:tmp[n][m]=k 表示用m步走完n階台階有k種走法,則可以得出:

tmp[1][1]=1;

tmp[2][1]=1;

tmp[2][2]=1;

當n>2時,有:

tmp[n][m]=tmp[n-1][m-1]+tmp[n-2][m-1];

最終結果p(n)=∑ tmp[n][t]  ( n%2==0?n/2:n/2+1<=t<=n)

public class ys_c_03 

} //最少步數

t=39/2+1;

int sum=0;

for(;t<=39;t++)

} system.out.println(sum);

}}

第39級台階

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

第39級台階

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

第39級台階

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