和上次一样,虽说用 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.

  

             ——泰戈尔《飞鸟集》

以上

最新文章

  1. CSS3 滤镜
  2. javascript基本对象
  3. Page Object Model (Selenium, Python)
  4. [问题2015S14] 复旦高等代数 II(14级)每周一题(第十五教学周)
  5. VMD_EI_API=&gt;MAINTAIN_BAPI 去创建供应商主数据
  6. JQuery EasyUI中datagrid的使用
  7. (08)odoo继承机制
  8. socket对于大数据的发送和接收
  9. 史上最全的 UIWebview 的 JS 与 OC 交互
  10. PHP之ThinkPHP数据操作CURD
  11. PHP 开发API接口 注册,登录,查询用户资料
  12. hdu5362 Just A String(dp)
  13. win7_32位安装MySQL_5.6以及密码修改方法
  14. configure mount nfs
  15. .NET Core微服务之基于Consul实现服务治理
  16. JavaScript-数字和字符串比较大小
  17. HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法
  18. Cucumber常用关键字
  19. C#基础(201)--常量枚举
  20. 关于ARM CM3的启动文件分析

热门文章

  1. uni-app实现弹窗遮罩
  2. 一对多关联按照一方的id查找信息的一个笛卡尔积问题
  3. idea开发springboot 的mysql数据库连接问题
  4. 使用CORDIC算法求解角度正余弦及Verilog实现
  5. Typecho博客添加版权说明
  6. Spring-IOC(基于XML配置)
  7. React 学习笔记(1) 基础语法和生命周期
  8. Elasticsearch 批处理
  9. js基础学习之-js包装对象
  10. 学习如何在maven建立一个javaweb环境