剑指Offer:机器人的运动范围
来源:互联网 发布:贵州省网络测评中心 编辑:程序博客网 时间:2024/06/05 12:06
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
# -*- coding:utf-8 -*-class Solution: def movingCount(self, threshold, rows, cols): # write code here visit = [0]*rows*cols #创建一个跟方格一样大小的矩阵,并且初始化元素全是False for i in range(rows*cols): visit[i] = False count = self.movingCountCore(threshold, rows, cols, 0, 0, visit) return count def movingCountCore(self, threshold, rows, cols, row, col, visit): count = 0 #如果这一个满足条件,即数位之和不大于K,且下标各种不能越界且没有来过,那就可以走啦 if (self.check(threshold, rows, cols, row, col, visit)): visit[row * cols + col] = True #上下左右走一遭 count = (1 + self.movingCountCore(threshold, rows, cols, row-1, col, visit) + self.movingCountCore(threshold, rows, cols, row, col-1, visit) + self.movingCountCore(threshold, rows, cols, row+1, col, visit) + self.movingCountCore(threshold, rows, cols, row, col+1, visit)) return count #判断这一步能不能走 def check(self,threshold, rows, cols, row, col, visit): if (row >= 0 and row < rows and col >= 0 and col < cols and self.getDigitSum(row) + self.getDigitSum(col) <= threshold and not visit[row*cols+col]): return True return False #判断数位之和是否大于k def getDigitSum(self, number): sum = 0 while number > 0: sum += number % 10 number /= 10 return sum
阅读全文
0 0
- 剑指offer--机器人的运动范围
- 剑指offer 67-机器人的运动范围
- 《剑指offer》机器人的运动范围
- 剑指offer—机器人的运动范围
- 剑指offer 66 机器人的运动范围
- [剑指offer]机器人的运动范围
- 《剑指offer》:[67]机器人的运动范围
- 剑指offer-机器人的运动范围
- 剑指offer-机器人的运动范围
- 剑指offer 机器人的运动范围
- 剑指Offer:机器人的运动范围
- 剑指offer-机器人的运动范围
- 剑指offer-----机器人的运动范围 java
- 剑指offer 机器人的运动范围
- 机器人运动范围--《剑指offer》
- 剑指offer--机器人运动范围
- 【剑指Offer学习】【面试题67:机器人的运动范围】
- 剑指offer系列之六十五:机器人的运动范围
- 模拟实现C库的memcpy和memmove。
- 免费馅饼--DP
- 剑指Offer--丑数
- Android——UI篇:关于Fragment的构造参数打包release版本报错的问题
- 关于Android Studio集成Hbuilder开发个推项目不能获取Clientid的问题说明
- 剑指Offer:机器人的运动范围
- 十五分钟了解朱利亚集
- 微信公众号--->java
- 一句话告诉你:java自动装箱 == 判定结果
- 设计模式六大原则
- 如何防止移动设备对系统的造成危险?
- [UVa 11491] 奖品的价值(Erasing and Winning)
- 17/08/08
- 在eclipse中配置一个简单的spring入门项目