HDU - 2045 不容易系列之(3)—— LELE的RPG難題

/*
  看來真是遺忘了很多知識點...這題也是搜完題解以後,才發現這題是用動態規劃的思路...
  
  另,感覺高中數學時好像也學過這個問題,當時好像是用排列組合的思路來寫的,其實這題,也可以藉助排列組合來理解動態規劃的遞推式
  
  2個小坑點:
  1. 本質上說,遞推基礎應該是 f(2) 和 f(3),因爲有 3 個方格時,剛好是最特殊的一種情況
  
  換種說法 n==3時,第 1 個方格和第(n-1)個方格必定不同色,如果此時再用遞推公式算,那就多算了一種情況,因而,運用遞推公式來算的思路,只能從 n 等於 4 開始用
  
  2. 還是剛剛那個坑點,不該用 int 類型,改用 long long,否則會出現 int 型的溢出
  
  查閱資料:
  http://blog.csdn.net/zf______/article/details/46959951
  http://blog.csdn.net/u013008291/article/details/40085897
  
*/


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


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