骨牌铺方格

骨牌铺方格

 

在1×n的一个长方形方格中,用1×1、1×2、1×3的骨牌铺满方格,输入n ,输出铺放方案的总数。 例如n=3时,为1× 3方格,骨牌的铺放方案有四种,如下图:

 

 

Input

输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是1×n

 

Output

对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。

 

Sample Input

 

1
2
3
0

Sample Output

 1
 2
 4
# include<stdio.h>
int d[3]={1,2,3};
int n,cnt;
void DFS(int index)
{
    int i;
    if(index>n)return;
    if(index==n)
    {
        cnt++;
        return;
    }
    for(i=0;i<=2;i++)
        DFS(index+d[i]);
}
int main()
{
    while(scanf("%d",&n)&&n)
    {
        cnt=0;
        DFS(0);
        printf("%d\n",cnt);
    }
    return 0;
}

  超时了

规律

# include<stdio.h>
int d[3]={1,2,3};
int n,cnt;
void DFS(int index)
{
    int i;
    if(index>n)return;
    if(index==n)
    {
        cnt++;
        return;
    }
    for(i=0;i<=2;i++)
        DFS(index+d[i]);
}
int main()
{
    while(scanf("%d",&n)&&n)
    {
        cnt=0;
        DFS(0);
        printf("%d\n",cnt);
    }
    return 0;
}

 

posted @ 2014-05-03 09:58  X-C++  阅读(903)  评论(0编辑  收藏  举报