题目来源:http://poj.org/problem?id=2506
Tiling
Time Limit: 1000MS |
Memory Limit: 65536K |
Total Submissions: 11145 |
Accepted: 5169 |
Description
In how many ways can you tile a 2xn rectangle by2x1 or 2x2 tiles?
Here is a sample tiling of a 2x17 rectangle.
Input
Input is a sequence of lines, each linecontaining an integer number 0 <= n <= 250.
Output
For each line of input, output one integernumber in a separate line giving the number of possible tilings of a 2xnrectangle.
Sample Input
2
8
12
100
200
Sample Output
3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251
Source
-----------------------------------------------------
解题思路
递推+Java高精度
坑点:为什么N=0的时候结果是1???
-----------------------------------------------------
代码
import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner s = new Scanner(System.in); int n = 0, i = 0; while (s.hasNext()) { n = s.nextInt(); if (n==0) { System.out.println(1); continue; } else if (n==1) { System.out.println(1); continue; } else if (n==2) { System.out.println(3); continue; } BigDecimal pans = new BigDecimal(1); BigDecimal ans = new BigDecimal(3); BigDecimal tmp = new BigDecimal(1); BigDecimal multiplier = new BigDecimal(2); for (i=0; i<n-2; i++) { tmp = pans; pans = ans; ans = tmp.multiply(multiplier).add(ans); } System.out.println(ans); } } }