sicily1121 用1*2的长方形铺满3*n的长方形,有多少种方法。

#include <bits/stdc++.h>
 
using namespace std;  

int dp[31];
int main() 
{
int n;
while(1){
cin >> n;
if (n == -1)
break;
if (n % 2 == 1)
{
cout << "0" << endl; 
continue;
}
dp[0] = 1;
dp[2] = 3;
for (int i = 4; i <= n; i += 2)
{
dp[i] = dp[i - 2] * dp[2];
for (int j = i - 4; j >= 0; j -= 2)
dp[i] += dp[j] * 2;
}
cout << dp[n] << endl;

}
   

你可能感兴趣的:(sicily1121 用1*2的长方形铺满3*n的长方形,有多少种方法。)