零起点学算法95——骨牌铺方格(找规律)

来源:互联网 发布:打鸟汽枪100元淘宝 编辑:程序博客网 时间:2024/06/09 16:18
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include<algorithm>using namespace std;long long  a[55];void init(){    a[1]=1;a[2]=2;a[3]=3;    for(int i=4;i<=50;i++)        a[i]=a[i-1]+a[i-2];}int main(){    init();    int n;    while(~scanf("%d",&n))    {        printf("%lld\n",a[n]);    }    return 0;}思路:
这个是找规律的题,a[1]=1,a[2]=2,a[i]=a[i-1]+a[i-2];
以2*3方格为例,
1:可以认为是2*2的方格在右边添加一个骨牌
2:可以认为是2*1的方格在右边添加两个上下堆叠的骨牌
依此类推:2*n的方格
1:可以认为是2*n-1的方格在右边添加一个骨牌
2:可以认为是2*n-2的方格在右边添加两个上下堆叠的骨牌
具体还是要手动画图才能体会里面的去重环节

Description

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

Input

输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。

Output

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

Sample Input 

132

Sample Output

132


 
原创粉丝点击