和上次一样,虽说用 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 算法练习(二)相关推荐

  1. Java算法学习二:二分法

    文章目录 一.前置条件一条有顺序的数组 二.查找代码 数组声明方式 1.int [] aa; 2.int aa [];不推荐 数组实例化方式(必须要声明数组大小) int [] aa=new int[ ...

  2. 悲哀!面试现场,简单几道java算法题,90%程序员没写出来

    这两天小编逛论坛的时候发现一个很有意思的事情,就是一位互联网公司的面试官分享的,他们最近想招一批java的实习生,所以他们的面试题并不难,但是前来面试的人,却很多都挂在了几道算法题上,要么就是逻辑不严 ...

  3. 惊!面试现场,简单几道java算法题,90%程序员没写出来

    近几个月很多大学实习生离校找实习工作去了,本以为自己很值钱,实际上发现自己并不值钱,想象着自己能赚很多钱了,结果只能拿到一点微薄的工资,很多人会怪公司给的少,但是你有没有想过,你自己的技术值多少钱?你 ...

  4. Java数据结构与算法(二)

    Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...

  5. 《数据结构与算法之二叉搜索树(Java实现)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...

  6. 【运筹优化】结合天际线启发式的蚁群算法求解二维矩形装箱问题 + Java代码实现

    文章目录 一.天际线启发式 二.蚁群算法结合天际线启发式 2.1 构建序列 2.1.1 思路一 2.1.2 思路二 2.1.3 思路N 三.Java代码实现 3.1 项目结构 3.2 Ant 3.3 ...

  7. (二)Java算法:插值查找

    目录 一.简介 1.1.特点 二.maven依赖 三.实现 3.1.代码实现 3.2.数据流向过程 3.3.数据查找流程 结语 一.简介 1.1.特点   插值查找,有序表的一种查找方式.插值查找是根 ...

  8. 【运筹优化】蚁群算法求解二维矩形装箱问题(java代码实现)

    文章目录 1 前言 2 代码迁移 3 蚁群算法 3.1 蚂蚁类 Ant 3.2 蚁群算法类 ACO_Packing 4 运行结果 5 后话 [运筹优化]求解二维矩形装箱问题的算法合辑(Java代码实现 ...

  9. java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)

    2D凸多边形碰撞检测算法(二) - GJK(上) 原理 在 Narrow Phase 精细碰撞检测中,除了 SAT ,另外一个就是 GJK(Gilbert–Johnson–Keerthi)算法.它足够 ...

  10. Java 快速开发二维码生成服务

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...

最新文章

  1. 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
  2. 3ds max 把模型放置到坐标系中心(原点)
  3. 【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
  4. LeetCode - 785. Is Graph Bipartite?
  5. python3命令行运行程序怎么关闭_python中怎样退出程序运行?
  6. 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
  7. c++虚继承和虚函数和抽象类、接口类,聚合类
  8. nginx location 正则表达式匹配多个地址_就是要让你搞懂Nginx,这篇就够了!
  9. LifeCycle源码解读
  10. 【C++ grammar】C++简化内存模型
  11. 收件服务器主机名未响应,邮箱收件服务器主机名是什么
  12. Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写
  13. Adidas、金拱门、KFC、乐天玛特,零售巨头的选址秘诀都在数据里了
  14. Conversion of Continuous-Valued Deep Networks to Efficient Event-Driven Networks for Image Classific
  15. 赛锐信息:SAP之工厂设置
  16. 【亲测有效】win10下输入法突然变成繁体了怎么设置回来?
  17. Oracle数据库创建表空间
  18. 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
  19. 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法
  20. java私塾 shiro_第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架——私塾在线原创...

热门文章

  1. 出行公司集体亮剑 自动驾驶花落谁家?
  2. 科大讯飞裁员!提前就餐4秒被优化,员工们都这样议论
  3. 深度分享:世界顶级神经科学家王小勤教授CCL 2018主旨报告(PPT全文,经报告人同意发布)...
  4. AI洞观 | AI寒冬将至?大咖们呼吁重启AI
  5. 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
  6. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
  7. 所有竞争,本质都是“硬核能力”之争
  8. 道阻且长,Libra 项目负责人长文回应一切质疑
  9. 定了!5G商用牌照近期发放​​​​,透露两大信息(附:2019年5G行业关键材料及市场研究报告)...
  10. 刘锋:互联网左右大脑结构与钱学森开放复杂巨系统