51nod 1031 骨牌覆蓋 題解

#1031 骨牌覆蓋
基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關注
在2N的一個長方形方格中,用一個12的骨牌排滿方格。
問有多少種不同的排列方法。

例如:2 * 3的方格,共有3種不同的排法。(由於方案的數量巨大,只輸出 Mod 10^9 + 7 的結果)

這裏寫圖片描述

####Input
輸入N(N <= 1000)
####Output
輸出數量 Mod 10^9 + 7
####Input示例

3

####Output示例

3
###簡單思路:
斐波那契數列,但遞歸會掛,所以用遞推。

#####代碼:


#include<bits/stdc++.h>
using namespace std;
long long a[1100]{1,1,0};//防爆 
/*int f(int n)  //遞推掛…… 
{
	if(n<=0) return 0;
	else if(n==1) return 1;
	else if(n==2) return 2;
	else if(n==3) return 3;
	else
		return (((f(n-1)%1000000007)+(f(n-2)%1000000007))%1000000007);
}*/
int main()
{
	int n,i;
	cin>>n;
	for(i=2;i<=n;i++)
		a[i]=(((a[i-1]%1000000007)+(a[i-2]%1000000007))%1000000007);	//改遞推 
	cout<<a[n];
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章