HDU - 2047 阿牛的EOF牛肉串

/*
  這題本來一頭霧水,但在看完一個博主的題解以後,有種“驚爲天人”之感...後來反思了一下,以前做數學題時,其實是有用過逆推法的,從最終的結果出發,不斷推理之前一步的情況
  
  仔細想了一下,遞推的許多題目,似乎都是從最後 1 個開始分析,不斷倒推前一個,再前一個的情況...
  
  剛剛做的那道,骨牌鋪方格,也是如此,先從最後的情況着手分析,最後的骨牌可以橫着放和豎着放,在分別推導橫着放的情況是固定前多少個?豎着放又是需要先固定好前多少個?這樣逐步遞推,如果出現不能拆分爲幾種情況,或者,情況的拆分方式,與後面的哪些骨牌拆分方式不同時,一般就是要作爲遞推基礎,這種特殊的情況,就需要在初始化時就賦值,而不能通過遞推公式計算得到
  
  這題也是如此,從最後的情況,不斷倒推之前一步的情況,直到碰到遞推基礎。不過後來看了下這個博主的博客,覺得自己不可能描述得更加清楚了,就直接搬運鏈接過來:
  
  http://blog.csdn.net/smile_7x/article/details/8301837
*/


#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] = 3; f[2] = 8;
	rep(i, 3, N) f[i] = 2 * ( f[i - 1] + f[i - 2] );
	while (cin >> n)
	{
		cout << f[n] << endl;
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章