2012年4月4日 星期三

d038: 900 - Brick Wall Patterns

內容 :
    如果我們要用常見的長度為高度兩倍的磚塊建一道磚牆,並且牆的高度為兩個單位,根據牆的長度,我們可以建出不同數量的花樣。從圖一我們可以看出:
                                               

  •     寛度為 1 單位的牆只有一種花樣—就是讓磚塊直立。
  •     長度為 2 的牆有 2 種花樣—兩個平躺的磚磈疊在一起以及兩個直立的磚塊併在一起。
  •     長度為 3 的牆有三種花樣。

    長度為 4 的牆你可以找出幾種花樣?那長度為 5 的牆呢?

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

輸入說明 :
    你將程式會收到一連串的整數,一行一個,每個整數代表牆的長度。牆的最大長度為 50。

輸出說明 :
    對於每個輸入的牆長度,你要輸出這道牆的花樣數量,每個數字單獨一行。

範例輸入 :
1
2
3
0

範例輸出 :
1
2
3

提示 :
    背景知識: DP

出處 :
    UVa ACM 900

程式碼 :
#include <stdio.h>

int main(void) 
{
    int i, n;
    long long arr[51];
    
    arr[1] = 1;
    arr[2] = 2;
    for(i=3; i<51; i++)
        arr[i] = arr[i-1] + arr[i-2];
    
    while(scanf("%d",&n)==1)
    {
        if(n == 0)
            break;
        
        printf("%lld\n",arr[n]);
    }
    
    return 0;
}

http://zerojudge.tw/ShowProblem?problemid=d038

沒有留言:

張貼留言