小明参加了学校的趣味运动会,其中的一个项目是: 跳格子
地上画着一些格子,每个格子里有一个字,如下所示
从我做起振
我做起振兴
做起振兴中
起振兴中华比赛时,先站在左上角的写着“从”字的格子里
可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置
一直要跳到“华”字结束
要求跳过的路线刚好构成“从我做起振兴中华“这句话
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
代码如下:
1: static int count;
2: public static void main(String[] args) {
3: System.out.println(f(5,4)); //代表5行4列
4: }
5: private static int f(int x , int y) {
6: if(x==1 || y == 1) {
7: return 1;
8: }else {
9: return f(x-1,y) + f(x,y-1);
10: }
11: }
小练习:
1、1200000有多少个约数?
思路:枚举
1: public static void main(String[] args) {
2: int a = 1200000;
3: int num = 0;
4: for(int i = 1 ; i <= a;i++) {
5: if(a%i == 0) {
6: num++;
7: }
8: }
9: System.out.print(num);
10: }
96
2、15.125GB是多少MB?
思路:1G = 1024MB
15488
3、一棵含有2019个结点的树,最多包含多少个叶结点?
思路:让2018个子节点都为根节点
2018
若题目改为:
一棵包含有2019个结点的二叉树,最多包含多少个叶结点?
1010
4、在1至2019中,有多少个数的数位中包含数字9?
注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数
1: public static void main(String[] args) {
2: int sum =0;
3: A: for (int i = 1; i <=2019; i++) {
4: int a=i;
5: while(a!=0){
6: int b = a%10;
7: if(b==9){
8: sum++;
9: continue A;
10: }
11: a/=10;
12: }
13: }
14: System.out.println(sum);
15: }
544