洛谷P1225 數樓梯

2022-02-16 15:49:45 字數 1421 閱讀 2053

樓梯有n階,上樓可以一步上一階,也可以一步上二階。

編乙個程式,計算共有多少種不同的走法。

乙個數字,樓梯數。

走的方式幾種。

輸入:

4輸出:

5

60% n<=50

100% n<=5000)

下面正式進入這道題的題解

我今天寫了兩篇題解(都很水)

這道題的話似乎有很多種方法,只是我見過的就好幾種

這裡就像大家推薦兩種方法嘍。

第一種解法

第一種解法是根據題意直接遞迴(推)(個人感覺是一種了)

我們想一下,走樓梯,要麼一次走一格,要麼一次走兩格,那我每次的走法就等於=上一格的方案數+上上格的方案數咯,這就推出了方程:

f[n]=f[n-1]+f[n-2]

ok結束啦。

但是要注意走到第n-1階的時候就不能再邁兩階了。

這裡就展示一種遞迴的解法:

1 #include2 #include3 #include4 #include5 #include6

#define inf 100000000

7using

namespace

std;

8int

ans,n,a;

9int dg(int

x)10

18int

main()

19

第二種解法

同學們把**提交上去之後就會發現會t掉或者wa(遞迴會t遞推沒試過)

wa的原因是因為資料大,需要高精度

tle因為遞迴的時間太長,資料太大。所以不可行(其實不是,在每一次計算出第x階是記錄下來方案數,下次直接用就可以,這裡不寫了)

所以就要想起其他方法:

高精加+斐波那契數列(一種正解)

為什麼會得出這個結論(我當時是打表找規律)

和這道題一樣的!

所以直接這麼辦就好(二維陣列要用上)

高精不會寫?這裡不教。。。。。。

上**!

1 #include2 #include3 #include4 #include5 #include6

#define inf 100000000

7using

namespace

std;

8int n,len=1,a[5010][5010];9

int p(int

j)1022}

23}24int

main()

25

好了結束啦!

最後祝大家ac所有題!

客官,給個贊再走唄!

洛谷 題解 P1225 黑白棋遊戲

看見很多dalao寫了什麼雙向bfs,蒟蒻表示不會寫啊。怎麼辦辦?先來分析一下題目,一眼看去就是乙個搜尋題,考慮dfs與bfs。先放乙份dfs的 includeusing namespace std bool a 5 5 b 5 5 char c int dx 5 int dy 5 int ans ...

洛谷 P1255 數樓梯

樓梯有 nn 階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。乙個數字,樓梯數。輸出走的方式總數。輸入 1複製 4輸出 1複製 5分析 說實話這題我真的快寫吐了,剛拿到的時候,開心的一批,遞推第一篇第一題,這麼水的嗎,不禁想起當年初次接觸acm,室友從cf上選了幾道題...

洛谷 P1255 數樓梯

樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。輸入格式 乙個數字,樓梯數。輸出格式 走的方式幾種。輸入樣例 1 複製 4 輸出樣例 1 複製 5 用遞迴會太慢,需用遞推 60 n 50 100 n 5000 思路 數學 高精 include include ...