HDU 1143 Tri Tiling

Tri Tiling

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2168    Accepted Submission(s): 1240


Problem Description
In how many ways can you tile a 3xn rectangle with 2x1 dominoes? Here is a sample tiling of a 3x12 rectangle.


 

Input
Input consists of several test cases followed by a line containing -1. Each test case is a line containing an integer 0 ≤ n ≤ 30. 
 

Output
For each test case, output one integer number giving the number of possible tilings. 
 

Sample Input
2 8 12 -1
 

Sample Output
3 153 2131
 

Source
解題思路:求3*n的地板可以由1*2的木板無縫拼接的方案種數,首先n的奇數的時候肯定無法拼接,當n爲偶數的時候,把整個看成f[i]由j*3和f[i-j]兩部分組成,j*3的部分是不由2*3拼接而來的方案種數,j=2時僅有3種方案,j!=2時有2種方案
#include <cstdio>
int main()
{
    int f[31];
    int i,j;
    int n;


    f[0]=1;
    for(i=1;i<=30;i+=2)    f[i]=0;
    for(i=2;i<=30;i+=2)
    {
        f[i]=0;
        for(j=2;j<=i;j+=2)
        {
            if(j==2)    f[i]+=3*f[i-j];
            else        f[i]+=2*f[i-j];
        }
    }
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);

    while(scanf("%d",&n),n!=-1)    printf("%d\n",f[n]);
    return 0;
}


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章