JZ13 | #机器人的运动范围# Python

机器人的运动范围

http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8

搞个列表把到过的位置记录 如果寻找到同一个位置 直接跳过

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# @param threshold int整型 
# @param rows int整型 
# @param cols int整型 
# @return int整型
#
class Solution:
    def __init__(self):
        self.set = [] # 存放曾经到过的位置 已经计数过的位置
       
	# 计算不同位置的和
    def sum_every(self,num):
        res = 0
        while num>=10:
            res += num%10
            num = num//10
        return res + num
    
    def movingCount(self, threshold: int, rows: int, cols: int) -> int:
        # write code here
        return self.Find(threshold, rows-1, cols-1, 0, 0) # 从(0,0)点开始 向右下角寻找
    
    def Find(self, threshold, rows, cols, x, y):
        if x<0 or y<0 or x>rows or y>cols or threshold < (self.sum_every(x)+self.sum_every(y)): # 不满足边界条件直接返回0
            return 0
        if [x,y] in self.set: # 如果曾经到过这个位置,该位置已经被计数 直接返回0 跳过
            return 0
        else:
            self.set.append([x,y])
        res_x = self.Find(threshold, rows, cols, x+1, y) # 向右 x轴方向计算
        res_y = self.Find(threshold, rows, cols, x, y+1) # 向下 y轴方向计算
        return res_x + res_y +1 # 将分叉中的计算个数 加上 分叉节点的个数1
全部评论
绝了,朋友!
点赞 回复 分享
发布于 2022-12-09 17:14 贵州

相关推荐

11-24 19:04
已编辑
湖南工商大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务