骨牌铺方格

Time Limit: 1000 ms Memory Limit: 32768 KiB

Problem Description

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

Input

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

Output

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

Sample Input

1
3
2

Sample Output

1
3
2

Hint

Source

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 map<long long,long long> mp;
 4 long long fun(int n){
 5     if(mp[n]) return mp[n];//若 结果 存在,则直接返回
 6     return  mp[n]=fun(n-1)+fun(n-2);//继续更新 mp[n]
 7 }
 8 int main()
 9 {
10     int n;
11     mp[1]=1,mp[2]=2;//先初始化 mp[1],mp[2]
12     while(cin>>n)
13         cout<<fun(n)<<endl;
14     return 0;
15 }
 
01-14 10:05