从A点到B点有n个格子,小明现在要从A点到B点,小明吃了些东西,补充了一下体力,他可以一步迈一个格子,也可以一步迈两个格子,也可以一步迈3个格子,也可以一步迈4个格子。请编写程序计算小明从A点到B点一共有多少种走法。
输入格式:
输入包含多组数据,第一行为一个整数m,m不超过10000,表示输入数据组数。接下来m行,每行为一个整数n(保证对应的输出结果小于231),表示从A点到B点的格子数。
输出格式:
输出为m个整数,表示对于每组数据小明从A点到B点的走法数。
输入样例:
2
5
3
输出样例:
15
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]]);
}
}