1. 程式人生 > >HDU 2046 骨牌鋪方格(遞推)

HDU 2046 骨牌鋪方格(遞推)

題目:HDU-2046 骨牌鋪方格

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2046

題目:

骨牌鋪方格

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 40817    Accepted Submission(s): 19793


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 很簡單很簡單,遞推關係式為,f(n)=f(n-1)+f(n-2),畫圖畫兩個就推出來,唉,畫的心累。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<math.h> 
using namespace std;
const int maxn=55;
long long ans[maxn];
int n;
int main(){
	for(int i=1;i<=50;i++)
			if(i==1) ans[i]=1;
			else if(i==2) ans[i]=2;
			else
				ans[i]=ans[i-1]+ans[i-2];
	while(cin>>n){
		cout<<ans[n]<<endl;
	}
	return 0;
}

加油~