小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里
但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。 要求跳过的路线刚好
构成“从我做起振兴中华”这句话。 请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
这种题目一般有一定的规律,不然基数大了,人眼去数肯定是做不到的。
我们发现,从第二行,第二列开始,每个格子里的数据都等于该格子同一行的前一个数与同一列的上一个数的和
即 arr[i][j] = arr[i-1][j]+arr[i][j-1]
所以,悠以上规律,我们得到
public class Main {
public static void main(String[] args) {
int arr[][] = new int[4][5];
for(int i=0; i<4; ++i){
for(int j=0; j<5; ++j){
if(i==0)
{
arr[i][j] = 1;
}
else
{
if(j==0)
arr[i][j] = 1;
else
arr[i][j] = 0;
}
}
}
for(int i=1; i<4; ++i){
for(int j=1; j<5; ++j){
arr[i][j] = arr[i-1][j]+arr[i][j-1];
}
}
System.out.println(arr[3][4]);
}
}