首页 > 代码库 > 拼图

拼图

 

拼图

 

Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   117       Accepted:   69

 

Description

给你1x2、2x1和2x2,3种矩形若干,请你计算出把它们放入2xn的矩形中,一共有多少方法?

Input

输入有多组测试数据
没行输入一个整数n , 3<=n<=20.

Output

输出能填满这个矩形的方法总数

Sample Input

3 
4

Sample Output

5
11
#include <iostream>
#include <stdio.h>
using namespace std;
int n,num;
int b[3]={1,2,2};
void dfs(int index)
{
    int i;
    if(index>n)
    {
        return ;
    }
    if(index==n)
    {
        num++;
    }
    for(i=0;i<3;i++)
    {
        dfs(index+b[i]);
    }

}
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        num = 0;
        dfs(0);
        printf("%d\n",num);
    }
    return 0;
}

规律

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# include<stdio.h>
int f(int n)
{
    if(n==1)return 1;
    if(n==2)return 3;
    return 2*f(n-2)+f(n-1);
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",f(n));
    }
    return 0;
}