题解 | #机器人的运动范围#
机器人的运动范围
https://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
连通区域的判定,见注释
class Solution: def movingCount(self , threshold: int, rows: int, cols: int) -> int: # 字典a记录每个位置的数位和 a = {} b = max(rows,cols) count = 0 # 找规律:8的时候只能0-8,9的时候可以突破8(0-18),10的时候可以突破18(0-28) # 其实就是一堆区域,可能连通可能不连通,连通就可以过去并计算,不连通就不能计算 # 找出边界board board = threshold*10 - 72 if threshold > 8 else threshold # 计算所有可能的位置的数位和,更新字典 for i in range(min(b,board + 1)): s = 0 j = i while j: d = j % 10 s += d j = j // 10 a[i] = s # 在边界内一个一个加呗 for i in range(min(board + 1, rows)): for j in range(min(board + 1, cols)): if (i + j <= board) and (a[i] + a[j] <= threshold): count = count + 1 return count