HDU

来源:互联网 发布:怎样购买spycall软件 编辑:程序博客网 时间:2024/06/07 02:11
/*  递归  总体思路:  对于 1张 1 * 2 的骨牌,它只有横放、竖放2种情况  如果要竖放,前(n-1)张牌必须已经固定好,因而这种情况下,就是 f(n-1)  同理,如果要横放,前(n-2)张牌必须已经固定好,这种情况下,就是 f(n-2)    把2种情况下的方案加起来,就是 n 张骨牌的放置方案总数    也可参见这个题解,我觉得比我解释得清楚许多:  http://blog.csdn.net/lishuhuakai/article/details/8531214*/


#include <iostream>#include <cstring>#define rep(i, k, n) for (int i = k; i < (n); i++)#define Clear(x, y) memset(x, 0, sizeof(x))using namespace std;const int N = 55;typedef long long LL;LL f[N];int n;int main(){Clear(f, 0);f[1] = 1; f[2] = 2;rep(i, 3, N) f[i] = f[i - 1] + f[i - 2];while (cin >> n){cout << f[n] << endl;}return 0;}


原创粉丝点击