解題思路:這是一道遞推題,對於這類題,最好的方法是將n從1開始對每種情況在草稿紙上畫一畫,會找到規律。
對於本道題的規律是:對於2*n的骨牌排列總數分為兩種情況,一種是在2*(n-2)的情況下新增兩個橫放的骨牌,另一種是在2*(n-1)的情況下新增乙個乙個骨牌即可。綜上所述,2*n的情況總數為2*(n-2)情況下的總數+2*(n-1)情況的總數。
如果設2*n的排列總數為f[n],那麼f[n]=f[n-2]+f[n-1],觀察這個式子,不難發現這就是著名的斐波那契數列。
原始碼附上:
#include #include #include using namespace std;
int f[1001];
int main()
f[n]=f[n]%1000000007;
cout<
return 0;
}
51NOD 1031 骨牌覆蓋
1031 骨牌覆蓋 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 在2 n的乙個長方形方格中,用乙個1 2的骨牌排滿方格。問有多少種不同的排列方法。例如 2 3的方格,共有3種不同的排法。由於方案的數量巨大,只輸出 mod 10 9 7 的結果 輸入n n 10...
51nod 1031 骨牌覆蓋
在2 n的乙個長方形方格中,用乙個1 2的骨牌排滿方格。問有多少種不同的排列方法。例如 2 3的方格,共有3種不同的排法。由於方案的數量巨大,只輸出 mod 10 9 7 的結果 input 輸入n n 1000 output 輸出數量 mod 10 9 7 input示例 3 output示例 3...
51nod 1031 骨牌覆蓋
對於長為n來說,相當於n 1在後面加了乙個豎著放的,對於n 2來說相當於加了乙個2 2的格仔,但是對於乙個2 2的格仔本來有兩種畫法,由於豎著畫的那種和n 1的部分有重疊,所以只加一次即可,對於n 3,會發現三種擺法都在n 1和n 2的方法中出現過了,所以遞推公式就是f n f n 1 f n 2 ...