題目連結: https://zerojudge.tw/ShowProblem?problemid=d253

# 內容

如果我們要用常見的長度為高度兩倍的磚塊建一道磚牆,並且牆的高度為兩個單位,根據牆的長度,我們可以建出不同數量的花樣。從圖一我們可以看出:
!()[https://zerojudge.tw/ShowImage?id=216]
寛度為 1 單位的牆只有一種花樣 — 就是讓磚塊直立。
長度為 2 的牆有 2 種花樣 — 兩個平躺的磚磈疊在一起以及兩個直立的磚塊併在一起。
長度為 3 的牆有三種花樣。
長度為 4 的牆你可以找出幾種花樣?那長度為 5 的牆呢?

問題
你的工作是要寫一個程式,給它牆的長度,它就算出這道牆可以有幾種花樣。

# 解題思路

這題的規律其實就是費氏數列。

令牆壁的長度為 n,n 若等於 1,就是 1 塊;n 若等於 2,就是 2 塊;n 若大於 2,則 n 長度的牆壁可由 n-1 長度的牆壁加一塊垂直的方塊以及由 n-2 長度的牆壁加兩塊平行的方塊而得到。

# 程式碼

#include<iostream>
using namespace std;
int main(){
  int dp[55] = {0,1,2};
  int n;
  for( int i = 3 ; i <= 50 ; i++ )
    dp[i] = dp[i-1]+dp[i-2];
  while( cin>>n && n )
    cout<<dp[n]<<endl;
  return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay