JAVA 算法练习(二)
和上次一样,虽说用 java 语言,但有 c 的基础一样可以看懂哦。
机器人走方格问题Ⅰ
题目概述
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。
测试样例:
2,2
返回:2
解析
不知道大家记得之前的dfs与bfs吗?这是那种类型题目的求通路数问题。我们之前要求求得到达目的地的最短路程,现在则求有多少条路可达目的地。
解题方法我觉得像是逐层累加,稍后大家利用表格还原代码过程就可以明白了。
代码如下:
public class Text7 {public int countWays(int x, int y) {int[][] dp = new int[x][y];dp[0][0] = 1;for (int i = 1; i < x; i++) {dp[i][0] = dp[i-1][0];}for (int i = 1; i < y; i++) { dp[0][i] = dp[0][i-1];}for (int i = 1; i < x; i++) {for (int j = 1; j < y; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[x-1][y-1];}
}
大家画图表推演下就懂了。
机器人走方格问题Ⅱ
题目概述
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。
给定一个int[][] map(C++ 中为vector >),表示网格图,若map[i][j]为1则说明该点不是障碍点,否则则为障碍。另外给定int x,int y,表示网格的大小。请返回机器人从(0,0)走到(x - 1,y - 1)的走法数,为了防止溢出,请将结果Mod 1000000007。保证x和y均小于等于50。
解析
这道有障碍的就更像之前的题了。总体思路和上题相同,但是要处理障碍物。根据左上角到右下角总体方向且只能向右或向下走,可以得知除上边界与左边界的方格外,其它方格可以不用处理。
大家想一想为什么要处理上边界与左边界的方格,该怎么处理呢?
代码如下:
public class Robot {public int countWays(int[][] map, int x, int y) {for (int i = 0; i < x; i++) {if (map[i][0] == 0) {for (int j = i; j < x; j++)map[j][0] = 0;}}for (int i = 0; i < y; i++) {if (map[0][i] == 0) {for (int j = i; j < y; j++)map[0][j] = 0;}}for (int i = 1; i < x; i++) {for (int j = 1; j < y; j++) {if (map[i][j] == 1) {map[i][j] = map[i][j-1] + map[i-1][j];}}}return map[x-1][y-1];}
}
附:诗
鸟儿愿为一朵云。
云儿愿为一只鸟。
the bird wishes it were a cloud.
the cloud wishes it were a bird.
——泰戈尔《飞鸟集》
以上
转载于:https://www.cnblogs.com/mxwbq/p/6869512.html
JAVA 算法练习(二)相关推荐
- Java算法学习二:二分法
文章目录 一.前置条件一条有顺序的数组 二.查找代码 数组声明方式 1.int [] aa; 2.int aa [];不推荐 数组实例化方式(必须要声明数组大小) int [] aa=new int[ ...
- 悲哀!面试现场,简单几道java算法题,90%程序员没写出来
这两天小编逛论坛的时候发现一个很有意思的事情,就是一位互联网公司的面试官分享的,他们最近想招一批java的实习生,所以他们的面试题并不难,但是前来面试的人,却很多都挂在了几道算法题上,要么就是逻辑不严 ...
- 惊!面试现场,简单几道java算法题,90%程序员没写出来
近几个月很多大学实习生离校找实习工作去了,本以为自己很值钱,实际上发现自己并不值钱,想象着自己能赚很多钱了,结果只能拿到一点微薄的工资,很多人会怪公司给的少,但是你有没有想过,你自己的技术值多少钱?你 ...
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
- 《数据结构与算法之二叉搜索树(Java实现)》
说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...
- 【运筹优化】结合天际线启发式的蚁群算法求解二维矩形装箱问题 + Java代码实现
文章目录 一.天际线启发式 二.蚁群算法结合天际线启发式 2.1 构建序列 2.1.1 思路一 2.1.2 思路二 2.1.3 思路N 三.Java代码实现 3.1 项目结构 3.2 Ant 3.3 ...
- (二)Java算法:插值查找
目录 一.简介 1.1.特点 二.maven依赖 三.实现 3.1.代码实现 3.2.数据流向过程 3.3.数据查找流程 结语 一.简介 1.1.特点 插值查找,有序表的一种查找方式.插值查找是根 ...
- 【运筹优化】蚁群算法求解二维矩形装箱问题(java代码实现)
文章目录 1 前言 2 代码迁移 3 蚁群算法 3.1 蚂蚁类 Ant 3.2 蚁群算法类 ACO_Packing 4 运行结果 5 后话 [运筹优化]求解二维矩形装箱问题的算法合辑(Java代码实现 ...
- java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)
2D凸多边形碰撞检测算法(二) - GJK(上) 原理 在 Narrow Phase 精细碰撞检测中,除了 SAT ,另外一个就是 GJK(Gilbert–Johnson–Keerthi)算法.它足够 ...
- Java 快速开发二维码生成服务
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...
最新文章
- 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
- 3ds max 把模型放置到坐标系中心(原点)
- 【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
- LeetCode - 785. Is Graph Bipartite?
- python3命令行运行程序怎么关闭_python中怎样退出程序运行?
- 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
- c++虚继承和虚函数和抽象类、接口类,聚合类
- nginx location 正则表达式匹配多个地址_就是要让你搞懂Nginx,这篇就够了!
- LifeCycle源码解读
- 【C++ grammar】C++简化内存模型
- 收件服务器主机名未响应,邮箱收件服务器主机名是什么
- Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写
- Adidas、金拱门、KFC、乐天玛特,零售巨头的选址秘诀都在数据里了
- Conversion of Continuous-Valued Deep Networks to Efficient Event-Driven Networks for Image Classific
- 赛锐信息:SAP之工厂设置
- 【亲测有效】win10下输入法突然变成繁体了怎么设置回来?
- Oracle数据库创建表空间
- 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
- 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法
- java私塾 shiro_第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架——私塾在线原创...
热门文章
- 出行公司集体亮剑 自动驾驶花落谁家?
- 科大讯飞裁员!提前就餐4秒被优化,员工们都这样议论
- 深度分享:世界顶级神经科学家王小勤教授CCL 2018主旨报告(PPT全文,经报告人同意发布)...
- AI洞观 | AI寒冬将至?大咖们呼吁重启AI
- 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
- 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
- 所有竞争,本质都是“硬核能力”之争
- 道阻且长,Libra 项目负责人长文回应一切质疑
- 定了!5G商用牌照近期发放​​​​,透露两大信息(附:2019年5G行业关键材料及市场研究报告)...
- 刘锋:互联网左右大脑结构与钱学森开放复杂巨系统