博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法-dfs-机器人的运动范围
阅读量:3959 次
发布时间:2019-05-24

本文共 1429 字,大约阅读时间需要 4 分钟。

题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

public class Solution {
public int movingCount(int threshold, int rows, int cols) {
boolean[] flag = new boolean[rows * cols]; return help2(threshold, rows, cols, 0, 0, flag); } //help2()返回1表示此处可以走 0表示此处走不通 public int help2(int threshold, int rows, int cols, int rowIndex, int colIndex, boolean[] flag) {
if(!(0 <= rowIndex && rowIndex < rows && 0 <= colIndex && colIndex < cols)) {
return 0; } int index = rowIndex * cols + colIndex; if(flag[index] == true) {
//该处走过了 return 0; } if(help2(rowIndex) + help2(colIndex) > threshold) {
//不满足题目所说 return 0; } //可以走了 flag[index] = true; return help2(threshold, rows, cols, rowIndex + 1, colIndex, flag) + help2(threshold, rows, cols, rowIndex - 1, colIndex, flag) + help2(threshold, rows, cols, rowIndex, colIndex + 1, flag) + help2(threshold, rows, cols, rowIndex, colIndex - 1, flag) + 1; } public int help2(int i) {
int sum = 0; do{
sum += i % 10; }while((i = i / 10) > 0); return sum; }}

转载地址:http://svhzi.baihongyu.com/

你可能感兴趣的文章
C#方法重载(overload)方法重写(override)隐藏(new)
查看>>
CSS+DIV练手-公司
查看>>
CSS+DIV练手—鲜花展
查看>>
深入浅出JavaScript(1)—ECMAScript
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
Asp.Net+Jquery.Ajax详解1-开篇
查看>>
我的软件工程之路(四)—半年总结
查看>>
Asp.Net+Jquery.Ajax详解5-$.getScript
查看>>
Asp.Net+Jquery.Ajax详解6-$.ajaxSetup
查看>>
什么是Dojo?与Jquery宏观对比,结果如何?
查看>>
Asp.Net+Jquery.Ajax详解8-核心$.ajax
查看>>
项目中一个用于导出word的方法
查看>>
测试Jsp 静态包含和动态包含
查看>>
简析几种常用的Web监听
查看>>
Web应用过滤器Fileter
查看>>
代理模式(Proxy)
查看>>
采用动态代理对事务进行封装
查看>>
Hibernate性能优化
查看>>
Spring核心ioc
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>