题目描述

在平面上有一些二维的点阵。

这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 行,从左到右依次为第 1 至第 列,每一个点可以用行号和列号来表示。

现在有个人站在第 1 行第 1 列,要走到第 行第 列。

只能向右或者向下走。

注意,如果行号和列数都是偶数,不能走入这一格中。

问有多少种方案。

输入

输入一行包含两个整数 。

输出

输出一个整数,表示答案。

样例输入

3 4

样例输出

2

提示

1<=n,m<=30

方法一:递归

import java.util.Scanner;
public class Main {public static void main(String[] args) {        Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt();int count=dfs(1,1,n,m);System.out.print(count);}public static int dfs(int i,int j,int n,int m){if(i%2==0&&j%2==0){return 0;}if(i==n&&j==m){return 1;}    if(i==n){return dfs(i,j+1,n,m);}if(j==m){return dfs(i+1,j,n,m);}return dfs(i,j+1,n,m)+dfs(i+1,j,n,m);}
}

分析

我看到题目首先想到的方法思想就是递归,一开始,只有两条路可以走,向下走或者向右走,然后再向下走或者向右走…

我们可以构出递归的函数,当递归到 i=n,j=m 的时候,return 1,这个1就是,找到了1条路。

当i=n的时候只能向右走,当j=m的时候只能向下走,那就继续递归,分别return dfs(i,j+1,n,m)、return dfs(i+1,j,n,m);

除了这两种情况以外,既可以向下走也可以向右走,那就继续递归,return dfs(i,j+1,n,m)+dfs(i+1,j,n,m) 。 因为两条路都可以走所以相加就可以了,根据最后return的值加起来得到最终的值。

重点来了,当 i 和 j 都是偶数的时候,不能走这个格子,那么在递归中就要结束它,这条路行不通,那就不能加1,所以return 0

当n和m都是偶数的时候,这个格子都走不进去,那自然没有路啦!(所以,要把return 0 放在return 1 的上面)

方法二:动态规划

import java.util.Scanner;
public class Main {public static void main(String[] args) {        Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt();int[][] dp=new int[n+1][m+1];for(int i=1;i<=n;i++){ //第一列全为1dp[i][1]=1;}for(int i=1;i<=m;i++){ //第一行全为1dp[1][i]=1;}for(int i=2;i<=n;i++){for(int j=2;j<=m;j++){if(i%2!=0||j%2!=0)dp[i][j]=dp[i][j-1]+dp[i-1][j];}}System.out.print(dp[n][m]);}
}

分析

算法思路是看了xpq的写的算法,因为用上面方法一递归AC了题目后就没想太多了,不过这种思路的算法还是蛮不错的!

定义二维数组,元素值表示 能够进入该格子的路径有几条。

首先,我们可以在草稿纸上画出n*m的格子,这里假设n=3,m=4。从第一行第一列(咱舍去第0行列)开始,我们可以发现第一行的每个格子能进入的路径数都是1。比如说,(1,2)第一行第二列的格子,它只能由一条路进入过来,那就是从(1,1)过来的,因为只能向下和向右走。

我们可以设想一下。第一行第三列的格子,它的上下左右有哪些格子可以从该格子走到第一行第三列的格子,前提是每个格子只能向下和向右走!!

同理,第一列的每个格子能进入的路径数也都是1。

行列都为偶数的格子,值都为0,也就是0条路。进都进不去

这会儿分析到这,应该能推算出,其他格子的路径数了吧,剩下每个格子的路径数为:左边格子的路径数+上面格子的路径数。因为只有左边的格子和上面的格子才能到本格子里来。

蓝桥杯2020年第十一届省赛真题-走方格-java相关推荐

  1. [蓝桥杯]2020年第十一届省赛真题C/C++ B组(七月)

    第十一届蓝桥杯省赛题目 试题A: 跑步训练 试题B: 纪念日 试题C: 合并检测 试题D: REPEAT 程序 试题E: 矩阵 试题F: 整除序列 试题G: 解码 试题H: 走方格 试题I:整数拼接 ...

  2. 蓝桥杯2020年第十一届国赛真题-皮亚诺曲线距离

    我找不到满分题解,结果我肝一个下午肝出来了,有一说一,在考场碰到这题估计要没,今年国赛加油把,方法过于暴力,仅供参考 #include<iostream> #include<algo ...

  3. 蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:7.八次求和

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 点击下面链接 蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA.B.C ...

  4. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  5. 蓝桥杯嵌入式第十届省赛真题

    蓝桥杯嵌入式第十届省赛真题 文章目录 蓝桥杯嵌入式第十届省赛真题 1.题目分析 2.项目结构 2.1数组思路 2.2Key_Flag控制对应逻辑 2.3KEY控制操作 1.题目分析 总的来说这题考点特 ...

  6. 第九届蓝桥杯JavaA组(2018年)省赛真题解析

    第九届蓝桥杯JavaA组(2018年)省赛真题解析 1.分数 1/1+1/2+1/4+1/8+1/16+- 每项是前一项的一半,如果一共有20项,求这个和是多少 结果用分数表示,类似: 3/2,当然这 ...

  7. 【蓝桥杯单片机第十二届国赛真题】

    [蓝桥杯单片机第十二届国赛真题] 文章目录 [蓝桥杯单片机第十二届国赛真题] 前言 一.真题 二.源码 前言 有幸进入国赛,为自己大学最后一个比赛画上完满的句号^@^ 下面为蓝桥杯单片机第十二届国赛程 ...

  8. 蓝桥杯嵌入式STM32G431——第九届省赛真题电子定时器

    第九届省赛真题电子定时器 第九届省赛真题 主函数代码(不包含各模块初始化代码) 按键模块与LCD模块的逻辑图(仅供参考) 第九届省赛真题 主函数代码(不包含各模块初始化代码) #include &qu ...

  9. [蓝桥杯]2018年第九届省赛真题C/C++ B组 填空+大题

    第九届蓝桥杯省赛题目 填空A:第几天 填空B:明码 填空C:乘积尾零 填空 D: 测试次数(待学习) 填空 E:快速排序 大题F:递增三元组 大题G: 螺旋折线 大题H:日志统计 大题I-全球变暖 填 ...

  10. 蓝桥杯嵌入式第十二届省赛真题

    第十二届蓝桥杯嵌入式-停车计费 文章目录 第十二届蓝桥杯嵌入式-停车计费 1.题目分析 2.项目结构 2.1停车部分整体流程 2.2串口数据解析流程 2.3细节部分 3.代码结构 3.1停车部分 3. ...

最新文章

  1. as3 android白屏,Android 8.0中一些坑以及对应的解决方法
  2. HDU2029:Palindromes _easy version
  3. 排序算法-04快速排序(Python实现)
  4. 【leetcode】443. String Compression
  5. 极简实用的Asp.NetCore模块化框架决定免费开源了
  6. TCP与UDP特点与区别
  7. ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传
  8. L1-018 大笨钟 (10 分) — 团体程序设计天梯赛
  9. Luogu P1967 货车运输 倍增+最大生成树
  10. matlab 课程设计心得与总结,(最新整理)课程设计心得体会
  11. Internet Explorer无法打开Internet 站点的原因
  12. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游
  13. 第一部分day5 文件操作
  14. PDF补丁丁( PDFPatcher.)
  15. Android 简单的内存管理器
  16. 阿里测试工程师聊:软件测试需要学什么?
  17. 你想要的资源我都有(2)
  18. 【每周研报复现】基于阻力支撑相对强度(RSRS)的市场择时
  19. android studio真机调试华为手机
  20. javaMail实现发邮件功能

热门文章

  1. 互联网和大数据是什么意思_什么是互联网大数据?
  2. 常用统计预测方法介绍
  3. My Fifty-First Page - 组合总和 - By Nicolas
  4. Zip伪加密 破解ZIP密码
  5. 数据从阿里云迁移到腾讯云
  6. Prince打造英语播音员1-3
  7. Debain查看ip地址
  8. cesium导入骨骼动画
  9. 开放式社区?太小儿科了,智慧城市才是重点
  10. atomic头文件编译_c++11 多线程(3)atomic 总结