樓梯有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 ...