**
1. 振兴中华
**
2. 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
答案是一个整数,请通过浏览器直接提交该数字。
注意:不要提交解答过程,或其它辅助说明类的内容。
解题思路
基础深搜dfs,而且每次只有向下或向右走才是有意义的。
3.`package demo4;
/**振兴中华
Problem Description:
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
答案是一个整数,请通过浏览器直接提交该数字。
注意:不要提交解答过程,或其它辅助说明类的内容。
解题思路1
基础深搜dfs,而且每次只有向下或向右走才是有意义的。
public class Main9 {
static int ans = 0;
public static void main(String[] args) {
dfs(0,0);
System.out.println(ans);
}
public static void dfs(int a, int b) {
if(a == 3&&b == 4) {
ans++;
}
if(a>3||b>4) {
return;
}
dfs(a+1,b);
dfs(a,b+1);
}
}//答案:35
解题思路2
public class Main9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] arr=new int[4][5];//注意是四列五纵
for (int i = 0; i < 5; i++) {
arr[0][i]=1;
}
for (int i = 0; i < 4; i++) {
arr[i][0]=1;
}
// System.out.println(arr[2][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[i][j]);//状态转移方程
}
}
System.out.println(arr[3][4]);//35种
}
结果
35