我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
输入:输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70),其中n为偶数。
输出:对应每个测试案例,
输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数。
样例输入:4
样例输出:
5
分析:把2约掉本题即为基本的斐波那契数列求值问题
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
/**
* 斐波那契数列之矩形覆盖
* @author aqia358
*
*/
public class Main {
public static long f(int n){
long[] a = new long[n+3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
int pos = 3;
while(pos <= n){
a[pos] = a[pos-1] + a[pos-2];
pos++;
}
return a[n];
}
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
while(st.nextToken() != st.TT_EOF){
System.out.println(f((int)st.nval));
}
}
}