在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
1 3 2
1 3 2
#include<math.h>
#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
int main()
{
long long int dp[100];
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
//第i个i*2格子如果竖着放那么方法数就是dp[i-1]
//第i-1和第i个i*2格子如果横放那么方法数就是dp[i-2]
//所以:dp[i] = dp[i - 1] + dp[i - 2];
//递推公式就出来了
for (int i = 4; i <= 50; i++)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
int n;
while (cin >> n)
{
cout << dp[n] << endl;
}
return 0;
}