这篇博客解题思路很明了:HDU 2046 骨牌铺方格(简单递推)
直接以最后一块骨牌分情况:
骨牌竖放:共有f(n-1)种情况
骨牌横置:共有f(n-2)种情况
所以可得:f(n)=f(n-1)+f(n-2)(这不是斐波那契数列吗?)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,dp[51]={0,1,2,3};
for(ll i=4;i<=50;i++)
dp[i]=dp[i-1]+dp[i-2];
while(cin>>n)
cout<<dp[n]<<endl;
return 0;
}