小明剛剛看完電影《第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級台階,有多少種不同的上法呢?請你利...