Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Problem Description
在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,爲2× 3方格,骨牌的鋪放方案有三種,如下圖:
Input
輸入數據由多行組成,每行包含一個整數n,表示該測試實例的長方形方格的規格是2×n (0<n<=50)。
Output
對於每個測試實例,請輸出鋪放方案的總數,每個實例的輸出佔一行。
Sample Input
1
3
2
Sample Output
1
3
2
一道找規律的題,設a[i]表示n=i時的排列種數,a[1]=1,a[2]=2,a[n]=a[n-1+a[n-2]。
a[i]其實就是a[i-1]的基礎上加了一條2X1的格子,豎着放,或者是a[i-2]的基礎上加一個2X2,橫着放。
靈魂畫手,見諒
C
#include <stdio.h>
#pragma warning(disable:4996)
int main(void)
{
long long a[51]={0,1,2}; //使用long long,要不然數字太大,會溢出
int i,n;
for(i=3;i<=50;i++)
a[i]=a[i-2]+a[i-1];
while(scanf("%d",&n)!=EOF)
printf("%lld\n",a[n]);
return 0;
}