poj-2506 Tiling

来源:互联网 发布:js file input 编辑:程序博客网 时间:2024/06/06 09:33

Description

In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?
Here is a sample tiling of a 2x17 rectangle.

Input

Input is a sequence of lines, each line containing an integer number 0 <= n <= 250.

Output

For each line of input, output one integer number in a separate line giving the number of possible tilings of a 2xn rectangle.

Sample Input

2812100200

Sample Output

317127318451004001521529343311354702511071292029505993517027974728227441735014801995855195223534251

    递推,从1开始画,数出4有几种情况基本就能得到递推公式了。关键需要注意的是,当n=0的时候输出的答案是1。(坑爹啊明明面积是0为何还要用一块板子)高精度运算就不多提了。

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    int n,x,t,i,p;    int arr[300][500];    while (scanf("%d",&n)!=EOF)    {            memset(arr,0,sizeof(arr));            arr[0][0]=1;            arr[1][0]=1;            arr[2][0]=3;            if(n==1||n==2||n==0)            printf("%d\n",arr[n][0]);            else            {                    for (i=3;i<=n;i++)                    {                            p=0;                            for (t=0;t<500;t++)                            {                                    arr[i][t] = arr[i-1][t]+2*arr[i-2][t]+p;                                    p=arr[i][t]/10;                                    arr[i][t] %= 10;                            }                    }                    for (i=499;i>=0;i--)                    {                            if(arr[n][i]!=0)                            {                                    for (;i>=0;i--)                                    {                                            printf("%d",arr[n][i]);                                    }                            }                    }                    printf("\n");            }    }    return 0;}


0 0
原创粉丝点击