樓梯有n階,上樓可以一步上一階,也可以一步上二階。
編乙個程式,計算共有多少種不同的走法。
輸入格式
乙個數字,樓梯數。
輸出格式
走的方式幾種。
輸入樣例
輸出樣例
說明/提示
60% n<=50
100% n<=5000)
根據題意會發現,到每階樓梯的走法數量和斐波那契數列很相像,都是f[i] = f[i-2]+f[i-1],但基準情況有點不同,先總結出該題公式
於是完全按公式寫出乙個解法
#include
using
namespace std;
unsigned
long
long f[
5005];
//儲存走到第i階樓梯有多少種走法的餘數
intmain()
但這個解法顯然是會溢位的,即使是unsigned long long也不可能裝下f(5000),這時可以考慮用陣列來儲存單個值,自己模擬乙個高精度的加法。**如下
#include
#include
using
namespace std;
char f[
5005][
2000];
//儲存走到第i階樓梯有多少種走法的餘數
inline
void
bigadd
(char
*ret,
const
char
*f1,
const
char
*f2)
else}}
intmain()
上面用的是字元陣列儲存數值,也可以直接使用整型陣列來儲存,更加方便計算,同時在計算方面,可以直接遍歷兩數每位,儲存相加的值先不進製,然後再第二遍遍歷時來處理進製,最後依然是倒序輸出。附上該題第一位題解的**,該**原位址。
#include
#include
#include
#include
using
namespace std;
int n,len=
1,f[
5003][
5003];
//f[k][i]--第k階台階所對應的走法數
voidhp(
int k)
//高精度加法,k來存階數
}int
main()
洛谷 P1255 數樓梯
樓梯有 nn 階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。乙個數字,樓梯數。輸出走的方式總數。輸入 1複製 4輸出 1複製 5分析 說實話這題我真的快寫吐了,剛拿到的時候,開心的一批,遞推第一篇第一題,這麼水的嗎,不禁想起當年初次接觸acm,室友從cf上選了幾道題...
洛谷 P1255 數樓梯
樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。輸入格式 乙個數字,樓梯數。輸出格式 走的方式幾種。輸入樣例 1 複製 4 輸出樣例 1 複製 5 用遞迴會太慢,需用遞推 60 n 50 100 n 5000 思路 數學 高精 include include ...
洛谷 P1255 數樓梯
題目鏈結 非常典型的 斐波那契 高精度 淺幫舍友做個題。不喜歡高精!對於60 的資料,n 50 對於100 的資料,1 n 5000 提交了一遍60分.用二維陣列dp x i x表示第幾步台階,i和位數相關。將走法的位數拆開分別存放在此行的每一列 從1到len 此行的某一列 上一行的某一列 上上行的...