1.NUBT1077—骨牌鋪方格
在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,爲2× 3方格,骨牌的鋪放方案有三種,如下圖:
解題思路:
(1)首先我們觀察2*1的情況,(如圖(1))這種情況下只有這一種解決方案,水平與垂直只是放置問題:
(2)在研究2*2的情況,(如圖(2)、(3))這種情況分爲兩種:
(3)以此類推,我們可以發現,首先設置a[n]數組來記錄,a[1]=1,a[2]=2,表示2*1和2*2情況的個數,
可以發現遞推公式:a[n]=a[n-1]+a[n-2]。
圖(1)、(2)、(3)
主要代碼:
#include<stdio.h>
int main()
{
int i,x;
long long int a[100];
while(scanf("%d",&x)!=EOF)
{
a[1]=1;
a[2]=2;
for(i=3;i<=x;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%I64d",a[x]);
}
}