咱們能夠用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)); } } }