題目鏈結:廣大oj1369
本題亦為廣大15級第一次周賽的b題。
problem descriptioninput
有多組輸入資料。
每組資料共一行,為乙個整數n(1<=n<=70)
output
對於每組輸入資料,輸出乙個整數m,m為小明跳n階樓梯的方法數。
sample input
1 2
4sample output
1 2
5hint
於是小明就孤獨一生了。
可喜可賀可喜可賀。
本題有兩種方法:
1.觀察規律。小明跳一階樓梯有1種方法,跳兩階樓梯有2種方法,跳三階樓梯有3種方法,跳四階樓梯有5種方法,依次類推,接下去的方法數為8,13,21,34,。。。。。。。
不難發現這是乙個斐波那契數列,於是就可以直接按求斐波那契數列的公式來算。
2.求遞推公式。利用狀態轉移的思想。假設小明跳n階樓梯會有f[n]種方法,那麼小明跳這n階樓梯的所有方法可以分為兩類:
一,最後一步為跳一階的方法
二,最後一步為跳兩階的方法
最後一步為跳一階的方法除去最後一步就是跳n-1階樓梯的方法數,最後一步為跳兩階的方法除去最後一步就是跳n-2階樓梯的方法數。
所以便可以得到如下遞推式:
f[n]=f[n-1]+f[n-2]
然後把特殊情況列出來(因為上式對n=1和n=2的情況不適用),於是就可以在算這道式子之前先初始化f[1]為1,f[2]為2。(當然也可以初始化f[0]=1,f[1]=1)
最後你會發現,這個推出來就是斐波那契數列的遞推式。
#include
int n;
long
long a[80];
int main()
1369 合併果子 fruit
在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。...
GZOJ 1368 愛迪生的煩惱
題目鏈結 廣大oj1368 本題亦為廣大15級第一次周賽的e題。problem description 牛頓 你好啊,愛迪生。愛迪生 好久不見啊老牛,冬天到了,你們那邊冷嗎?牛頓 我們這邊已經在開始下雪了,你們呢?愛迪生 下雪了!你們那邊多少度來著?牛頓 15度吧。愛迪生 臥槽!15度就下雪了!水怎...
難解的問題(vijos1369)
演算法 dp 分析 非常經典的乙個題,個人認為cai神牛的解法非常獨特,值得借鑑!簡單的說,題目就是求乙個包含某一項的最長上公升序列,設序列的序號是m,我們可以採用這種思路 先求1 m中以m為終點的最長上公升,再求m n中以m為起點的最長上公升,兩項累加一下就可以得出結果。題目資料量很大,因此我們只...