C++:N阶楼梯上楼问题
生活随笔
收集整理的這篇文章主要介紹了
C++:N阶楼梯上楼问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
N階樓梯上樓問題:一次可以走兩階或一階,問有多少種上樓方式。(要求采用非遞歸)
輸入描述:
輸入包括一個整數(shù)N,(1<=N<90)。
輸出描述:
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù),
輸出當樓梯階數(shù)是N時的上樓方式個數(shù)。
示例1
輸入
4
輸出
5
解題思路
設f(n)表示走法隨階梯數(shù)量n變化的函數(shù)
找規(guī)律:
1級階梯f(1) = 1種走法
2級階梯f(2) = 2種走法
3級階梯f(3) = f(2) + f(1) = 3種走法
4級階梯f(4) = f(3) + f(2) = 5種走法
…
n級階梯f(n) = f(n - 1) + f(n - 2)種走法
解題代碼
#include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll f[100];//用long long存儲上樓方式總數(shù),避免數(shù)據(jù)溢出int main(){ f[1] = 1, f[2] = 2;//打表用空間換時間 for(int i = 3; i <= 90; i++) f[i] = f[i - 1] + f[i - 2];int n;//樓梯階數(shù)//輸入多組數(shù)據(jù)while(~scanf("%d", &n)){printf("%lld\n", f[n]);//輸出}return 0; }總結(jié)
以上是生活随笔為你收集整理的C++:N阶楼梯上楼问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终局思维
- 下一篇: 初级计算机操作员职业资格证书,计算机操作