从A点到B点有n个格子,小明现在要从A点到B点,小明吃了些东西,补充了一下体力,他可以一步迈一个格子,也可以一步迈两个格子,也可以一步迈3个格子,也可以一步迈4个格子。请编写程序计算小明从A点到B点一共有多少种走法。
输入格式:
输入包含多组数据,第一行为一个整数m,m不超过10000,表示输入数据组数。接下来m行,每行为一个整数n(保证对应的输出结果小于231),表示从A点到B点的格子数。
输出格式:
输出为m个整数,表示对于每组数据小明从A点到B点的走法数。
输入样例:
1. 2 2. 5 3. 3
输出样例:
1. 15 2. 4
java里面的快读:
1:我们在使用他时,我们要导入io包,他时io包中的类
2:在使用这个类时,函数要throws IOException
3:StreamTokenizer re = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
4:StreamTokenizer 类中 有个方法是 nval 这个方法就是我们读取数据的方法,他默认是double类型的
5:b[i] = b[i-1] + b[i-2] + b[i - 3] + b[i - 4] == > b[i] = 2 * b[i - 1] - b[i - 5]
import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws IOException{ StreamTokenizer re = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); re.nextToken(); int T = (int)re.nval; int a[] = new int[10010]; int b[] = new int[100]; int i,j,maxx = 0; for(i=0;i<T;i++) { re.nextToken(); a[i] = (int)re.nval; if(maxx < a[i]) maxx = a[i]; } b[0] = 1;b[1] = 1;b[2] = 2;b[3] = 4;b[4] = 8; for(i=5;i<=maxx;i++) b[i] = 2 * b[i - 1] - b[i - 5]; for(i=0;i<T;i++) System.out.println(b[a[i]]); } }