题目描述: java
一只青蛙一次能够跳上1级台阶,也能够跳上2级……它也能够跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 测试
输入:输入可能包含多个测试样例,对于每一个测试案例, spa
输入包括一个整数n(1<=n<=50)。 code
输出:对应每一个测试案例, it
输出该青蛙跳上一个n级的台阶总共有多少种跳法。 io
样例输入:6样例输出:
32
分析: class
当台阶数为n时,能够分为如下步骤来完成:
设第一次跳的台阶数为s,跳台阶方式数为T,则:
(1)s=1时,T(n) = T(n-1)
(2)s=2时,T(n) = T(n-2)
.
.
.
(n)s=n时,T(n) = T(0) = 1
因此总的跳台阶方式数T能够表示为:
T(n) = T(0) + T(1) + T(2) + ... + T(n-1)
因为T(0) = T(1) = 1,因此T(n) = 2^(n-1) import
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+2]; a[1] = 1; a[2] = 2; int pos = 3; while(pos <= n){ a[pos] = a[pos-1] * 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)); } } }