HDU 2046
骨牌鋪方格
http://acm.hdu.edu.cn/showproblem.php?pid=2046
Total Submission(s): 42141 Accepted Submission(s): 20464
例如n=3時,爲2× 3方格,骨牌的鋪放方案有三種,如下圖:
題意分析:
要鋪第 n 塊,則n - 1 塊鋪好了,或者沒鋪好;
1.若鋪好了則只需豎着鋪好就行,即有f(n - 1)種方法;
2. 若沒鋪好則需將兩個方塊在 n - 2 塊已經放好的基礎上橫着放好,也是對應的種數,即f(n - 2)種;
3.所以 f(n) = f(n - 1) + f(n - 2).
#include<iostream>
using namespace std;
int main(void)
{
_int64 s[52];
s[1] = 1, s[2] = 2;
for (int i = 3; i < 51; i++)
{
s[i] = s[i - 1] + s[i - 2];
}
int N;
while (cin >> N)
cout << s[N] << endl;
return 0;
}