舉個例子,假設有3個台階,則有三種走法:分別是,1-1-1, 1-2, 2-1。
很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f(k)種走法。
於是有如下公式
上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n=4時,五種走法分別如下:
1,1,1,1
1,1,2
1,2,1
2,1,1
2,2我們用乙個整型陣列來存放每一步的內容,1表示這步走了乙個台階,2表示這步走了兩個台階。回溯法搞定。**如下。
void與此題類似的問題有很多,比如鋪地磚問題,自然數拆分等。count(
intn,
intt)}}
有乙個長度為n,寬度為2的地面,有若干塊長為2,寬為1的地磚,請問用此地磚鋪完這個地面共有多少種方法?
分析一下,假設鋪完長度為n的地面有f(n)種方法,如果第一塊地磚豎起來鋪,還剩下長度為n-1的地面,有f(n-1)種方法。如下圖。
如果第一塊地轉橫著鋪,那麼還剩下長度為n-2的地面,有f(n-2)種鋪法。如下圖。
所以這道題與上面的題解法完全一樣。不同的題目,相同的模型而已。
給定乙個自然數n,將其拆分為若干個自然數字之和,請問有多少種方法?舉個例子,n=4時,可以拆分為1-1-1-1,1-1-2,1-3,2-2。
這題和上面的題很像,不過上面的問題是排列問題,而這題是組合問題,比如n=4時,1-1-2,1-2-1,2-1-1這三種只能算乙個拆分。在上面的基礎上,去掉重複的組合即可。
走台階問題
舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 遞迴演算法int count unsigned intn 非遞迴演算法int count unsigned i...
走台階問題
舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n 4時,五種走法分別如下 1,1,1,1 1,...
走台階問題
舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n 4時,五種走法分別如下 1,1,1,1 1,...