题目:链接:https://www.nowcoder.com/questionTerminal/e8bb8e68434e42acbcdff0341f2a32c5
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。
给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。

测试样例:
2,2
返回:2

解析一:只是利用简单的递归做的话,比较简单,就是重复计算的太多

   public static int countWays(int x, int y) {if ( x==1 || y==1 )//输入的数据只有一行或者只有一列,当然只有一种情况了return 1;return countWays(x-1,y)+countWays(x,y-1);//全往下走有countWays(x-1,y)种,全往右边走有countWays(x,y-1)种。或者理解为最后的那个格子的数据只能来自于上方或者它的左侧,如此递归求解}

解析二:使用动态规划做,需要一个二维数组记录每个方格的步数情况。以3X3为例(即x=3,y=3),初始化数据的时候,(0,0)的点的值为0,第一行以及第一列均设为1。其他方格的数据一定来自于它的上侧以及它的左侧的数据之和,示意图见下图。

    //dp解法的机器人走方格public static int countWays(int x, int y) {int [][] dp = new int [x][y];//存储每一个方格的步数dp[0][0]=0;                  //原点的初始化for(int i=1;i<y;i++){        //第一行的初始化dp[0][i]=1;}for(int j=1;j<x;j++){       //第一列的初始化dp[j][0]=1;}for(int i=1;i<x;i++){for(int j=1;j<y;j++){dp[i][j]=dp[i-1][y]+dp[i][j-1];}}return dp[x-1][y-1];        //右下角的步数}

动态规划(一)入门例子相关推荐

  1. 动态规划从入门到放弃【1】

    动态规划 分治法 分治法是将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解. 动态规划 动态规划是应用于子问题重叠的情况,即不同的子问题具有公共的子子问题. 最简单 ...

  2. Cassandra 单机入门例子——有索引

    入门例子: http://wiki.apache.org/cassandra/GettingStarted 添加环境变量并source生效,使得可以在任意位置执行cassandra/bin安装目录下的 ...

  3. spark streaming 入门例子

    spark streaming 入门例子: spark shell import org.apache.spark._ import org.apache.spark.streaming._sc.ge ...

  4. 图解VC++2012编译安装GDAL1.11.0和入门例子

    相关下载 http://pan.baidu.com/s/1o7OEMc6 gdal1.rar - 入门例子 GDAL书籍代码及数据.rar gdal1110.zip - 下载的源码 GDAL.rar ...

  5. Orleans入门例子

    Orleans是微软开源的分布式actor模型框架.actor模型的原理网络上有很多文章.有许多理论性的文章,深刻地我都不知道怎么应用.在这里我就不赘述了.既然是博客,就说说自己的理解. 对于编程来说 ...

  6. Orleans 初接触(一) 入门例子

    [返回导航] 在简单了解了Orleans 之后我们可以通过几个例子去加深印象 一.Orleans入门例子 这个例子是跟着<Orleans入门例子>(https://www.cnblogs. ...

  7. [深度学习-实践]CycleGAN的入门例子-Tensorflow2.1-keras

    系列文章目录 深度学习GAN(一)之简单介绍 深度学习GAN(二)之DCGAN基于CIFAR10数据集的例子 深度学习GAN(三)之DCGAN基于手写体Mnist数据集的例子 深度学习GAN(四)之c ...

  8. [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片

    系列文章目录 深度学习GAN(一)之简单介绍 深度学习GAN(二)之基于CIFAR10数据集的例子; 深度学习GAN(三)之基于手写体Mnist数据集的例子; 深度学习GAN(四)之PIX2PIX G ...

  9. Restlet入门例子 - RESTful web framwork for java

    RESTful系列文章索引 Restlet入门例子 - RESTful web framwork for java [原创]Jersey入门例子 官方网站介绍: http://www.restlet. ...

  10. 一个简单的iBatis入门例子

    一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. ibatis-2.3.4.726.jar ojdbc14.jar 2.创建类com/ ...

最新文章

  1. 模板模式(template)解析例子
  2. 软件测试技术---黑盒测试
  3. 测试框架 Jest 实例教程
  4. 线程的状态、进程的状态
  5. zendstudio快捷键收录
  6. hdu3359 Kind of a Blur
  7. 如何解决MFC读取文件在EditControl中显示是乱码的问题
  8. STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
  9. iOS开发音频格式转换
  10. gif动态表情包怎么制作?
  11. 浅谈某定设计网站非会员去除水印
  12. 智力答题源码php,php儿童智力测评系统
  13. 【网络空间安全数学基础第8章】环和域
  14. SCI、EI论文框架
  15. 关于安卓视频加水印与剪辑功能实现
  16. 一般企业里的服务器采用的是什么系统?windows?还是linux?
  17. 网络流量分析 NetFlow是什么 详解 科普 ~互联网业务流量监测技术的应用和设计---perfect
  18. Pandas学习笔记(一)
  19. IObit Uninstaller安装
  20. html银行支付语言,添加银行卡.html

热门文章

  1. zoj 3209 Dancing links/hust 1017
  2. Leecode19. 删除链表的倒数第 N 个结点——Leecode大厂热题100道系列
  3. 【最简代码】1076 Wifi密码 (15分)_8行代码AC
  4. 14行代码满分:1037 在霍格沃茨找零钱 (20分)
  5. 序列化和反序列化的概念与延伸【详细解释 + 样例演示】
  6. Linux基础优化方法(四)———远程连接缓慢优化
  7. Linux小实验——设备挂载、磁盘分区、格式化、RAID的配置、LVM配置、磁盘配额的配置方法和验证
  8. pythonalert弹窗_python+selenium八:Alert弹窗
  9. 一文搞定Linux shell脚本编程( 史上最全汇总 )
  10. FatFs源码剖析(1)