问题链接:https://vjudge.net/problem/HDU-2046
Get:这是一道递推求解题,n规模的格子只能从n-1和n-2得来,n-1的时候增加一个格子,只能竖着放,n-2的时候增加两个格子,只能横着放(如果竖着放,就跟n-1的时候重复了)。所以f(n)=f(n-1)+f(n-2),符合斐波那契数列。到了后面f(n)越来越大,所以用__int64或long long
定义变量。
AC代码:
#include <iostream>
using namespace std;
int main()
{
int n;
__int64 a[50] = { 1,2,3 };
while (cin >> n)
{
for (int i = 3; i < n; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
cout << a[n - 1] << endl;
}
}