题目连接:HDU - 2046
题目描述:
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
1
3
2
1
3
2
思路:就是简单递推,每增加一列,可以看成一下两种情况:
1.前n-1列加最后一列竖着摆
2.前n-2列加后两列横着摆
所以答案就是斐波那契数列!!
代码:
#include<stdio.h>
#include<string.h>
typedef long long ll ;
ll s[55] , dp[55] ;
int main() {
dp[0] = 1 ;
dp[1] = 1 ;
for( int i=2 ; i<=50 ; i++ ) dp[i] = dp[i-1] + dp[i-2] ;
int n ;
while( scanf("%d" , &n ) != EOF ) {
printf("%lld\n" , dp[n] ) ;
}
return 0 ;
}