动态规划(一)入门例子
题目:链接: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】
动态规划 分治法 分治法是将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解. 动态规划 动态规划是应用于子问题重叠的情况,即不同的子问题具有公共的子子问题. 最简单 ...
- Cassandra 单机入门例子——有索引
入门例子: http://wiki.apache.org/cassandra/GettingStarted 添加环境变量并source生效,使得可以在任意位置执行cassandra/bin安装目录下的 ...
- spark streaming 入门例子
spark streaming 入门例子: spark shell import org.apache.spark._ import org.apache.spark.streaming._sc.ge ...
- 图解VC++2012编译安装GDAL1.11.0和入门例子
相关下载 http://pan.baidu.com/s/1o7OEMc6 gdal1.rar - 入门例子 GDAL书籍代码及数据.rar gdal1110.zip - 下载的源码 GDAL.rar ...
- Orleans入门例子
Orleans是微软开源的分布式actor模型框架.actor模型的原理网络上有很多文章.有许多理论性的文章,深刻地我都不知道怎么应用.在这里我就不赘述了.既然是博客,就说说自己的理解. 对于编程来说 ...
- Orleans 初接触(一) 入门例子
[返回导航] 在简单了解了Orleans 之后我们可以通过几个例子去加深印象 一.Orleans入门例子 这个例子是跟着<Orleans入门例子>(https://www.cnblogs. ...
- [深度学习-实践]CycleGAN的入门例子-Tensorflow2.1-keras
系列文章目录 深度学习GAN(一)之简单介绍 深度学习GAN(二)之DCGAN基于CIFAR10数据集的例子 深度学习GAN(三)之DCGAN基于手写体Mnist数据集的例子 深度学习GAN(四)之c ...
- [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片
系列文章目录 深度学习GAN(一)之简单介绍 深度学习GAN(二)之基于CIFAR10数据集的例子; 深度学习GAN(三)之基于手写体Mnist数据集的例子; 深度学习GAN(四)之PIX2PIX G ...
- Restlet入门例子 - RESTful web framwork for java
RESTful系列文章索引 Restlet入门例子 - RESTful web framwork for java [原创]Jersey入门例子 官方网站介绍: http://www.restlet. ...
- 一个简单的iBatis入门例子
一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. ibatis-2.3.4.726.jar ojdbc14.jar 2.创建类com/ ...
最新文章
- 模板模式(template)解析例子
- 软件测试技术---黑盒测试
- 测试框架 Jest 实例教程
- 线程的状态、进程的状态
- zendstudio快捷键收录
- hdu3359 Kind of a Blur
- 如何解决MFC读取文件在EditControl中显示是乱码的问题
- STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
- iOS开发音频格式转换
- gif动态表情包怎么制作?
- 浅谈某定设计网站非会员去除水印
- 智力答题源码php,php儿童智力测评系统
- 【网络空间安全数学基础第8章】环和域
- SCI、EI论文框架
- 关于安卓视频加水印与剪辑功能实现
- 一般企业里的服务器采用的是什么系统?windows?还是linux?
- 网络流量分析 NetFlow是什么 详解 科普 ~互联网业务流量监测技术的应用和设计---perfect
- Pandas学习笔记(一)
- IObit Uninstaller安装
- html银行支付语言,添加银行卡.html
热门文章
- zoj 3209 Dancing links/hust 1017
- Leecode19. 删除链表的倒数第 N 个结点——Leecode大厂热题100道系列
- 【最简代码】1076 Wifi密码 (15分)_8行代码AC
- 14行代码满分:1037 在霍格沃茨找零钱 (20分)
- 序列化和反序列化的概念与延伸【详细解释 + 样例演示】
- Linux基础优化方法(四)———远程连接缓慢优化
- Linux小实验——设备挂载、磁盘分区、格式化、RAID的配置、LVM配置、磁盘配额的配置方法和验证
- pythonalert弹窗_python+selenium八:Alert弹窗
- 一文搞定Linux shell脚本编程( 史上最全汇总 )
- FatFs源码剖析(1)