咱们能够用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? java
输入:输入可能包含多个测试样例,对于每一个测试案例, 测试
输入包括一个整数n(1<=n<=70),其中n为偶数。 spa
输出:对应每一个测试案例, code
输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数。 it
样例输入:4样例输出:
5
分析:把2约掉本题即为基本的斐波那契数列求值问题 io
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)); } } }