小明剛剛看完電影《第39級台階》,離開電影院的時候,他數了數禮堂前的台階數,恰好是39級!
站在台階前,他突然又想著乙個問題:
如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?
請你利用計算機的優勢,幫助小明尋找答案。
思路1:遞迴求解
說一下我的思路:
b 用來表示左腳還是右腳:
b=0, 表示這一步要跨左腳 ,(也表示跨了奇數步)
b=1,表示這一步要跨右腳,(也表示跨了偶數步)
當台階只剩下乙個時,這時 必須要跨右腳,才達到偶數步。
a 用來表示要跨的步數:
當a==2時,不管b==0還是1,都各有一種走法(這兩種跨法不同),自己思考是跨左腳還是跨右腳。
我就合成乙個了。
已知ans[1]=0,ans[2]=1,下面就可以遞迴求解了。
思路2:排列組合
答案:51167078
附上**:
[cpp]view plain
copy
#include
intfac(
inta,
intb)
if(a==2)
return
1;
return
(fac(a-1,!b)+fac(a-2,!b));
} int
main()
方法二:
/*#includeint k=0;
int f(int x,int y)
int main()
*/
方法三:
[cpp]view plain
copy
#include
intcombination(
intm,
intn)
//c(n,m)
intmain()
第39階台階 藍橋杯
內容 2013年第四屆藍橋杯全國軟體大賽預賽第三題。該情景可簡化為39與0和1的關係問題,還有乙個限制條件,一共要走偶數步。這道題可以有兩種思路,遞迴與排列組合,都不長,重在思考過程。include int n 0 int fun int r,int s if r 0 s 2 0 for int i...
藍橋杯 第39階台階
見證自己的成長 小明剛剛看完電影 第39級台階 離開電影院的時候,他數了數禮堂前的台階數,恰好是39級 站在台階前,他突然又想著乙個問題 如果我每一步只能邁上1個或2個台階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級台階,有多少種不同的上法呢?請你利用計算機的...
第39階台階 藍橋杯
package algorithm 題意 第39階台階 藍橋杯 思路 遞迴思想 先左,最後右,一定為偶數步。2個變數 剩餘台階數 走的步數.第一步分2種情況 走1步,走2步 第一種 走一步,剩餘為38,走的步數1步 第二種 走2步,剩餘37,走的步數1 public class stepalgori...