【问题】
现有2×n的空间需要用1×2的板子(无穷个,可旋转),那么总共有多少种填充方式。(其中,0≤n≤50,注意边界值)
【输入】
输入由一系列的测试样例构成,每一个测试样例占据一行,包含一个整数n。
【输出】
对于每一次输出样例,输出可能的填充方式。每一次输出样例另起一行。
【示例输入】
0
7
【示例输出】
0
21
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【解答】
递归数列可以从下式推出:
【示例代码(动态规划)】
//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:瓷砖问题
// 程序描述:动态规划
// IDE版本:Visual Studio 2013
// 作者:Arthur Lee
//------------------------------------------------------------------------------------------------
//【1】头文件
#include <fstream>
#include <ctime>
using namespace std;
const int MaxColumn = 50;
#define TIMER
//【2】函数声明
void InitialData(int);
int Calculate(int);
//【3】定义枚举体,在几种方法中切换
enum Method
{
};
enum Shape
{
Tile_1_2,
Tile_2_1
};
//【4】变量声明
int DP[MaxColumn];
int main(){
#ifdef TIMER
clock_t start = clock();
#endif // TIMER
ifstream fin("in.txt");
if (fin.fail())
return 1;
ofstream fou