杭电oj2046骨牌铺方格原题链接
题目描述:
思路:以右上角为基点,竖着放一个则放法有f(n-1)种,横着放两个则有f(n-2)种,相加即为铺放方案的总数
AC代码:
#include <iostream>
using namespace std;
long long arr[55]; //注意:定义成long long类型,不然会wa
int main()
{
int n;
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
for(int i = 4; i < 55; i++)
{
arr[i] = arr[i-1] + arr[i-2];
}
while(scanf("%d",&n) != EOF)
{
cout << arr[n] << endl;
}
return 0;
}
出现的bug: 注意不要使用递归函数,容易爆栈,用数组保存f(n)的值,数组类型定义为long long