题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2046
解题思路:简单的动规题,骨牌的边长只有1和2,所以用n个骨牌的方案数只与用n-1个和n-2个骨牌的方案数有关,可以推出dp方程:dp[n]=dp[n-1]+dp[n-2]。
#include <cstdio>
#include <cstring>
using namespace std;
#define N 60
int n;
unsigned long long dp[N];
int main()
{
memset(dp,0,sizeof(dp));
dp[1]=1;dp[2]=2;dp[3]=3;
for(int i=4;i<=50;++i)
dp[i]=dp[i-1]+dp[i-2];
while(scanf("%d",&n)!=EOF)
{
printf("%lld\n",dp[n]);
}
return 0;
}