zoukankan      html  css  js  c++  java
  • 机器人的运动范围 牛客网 剑指Offer

    机器人的运动范围 牛客网 剑指Offer

    • 题目描述
    • 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
    class Solution:
        def movingCount(self, threshold, rows, cols):
            visited = [False] * (rows * cols)
            count = self.movingCountCore(threshold, rows, cols, 0, 0, visited)
            return count
        
        def get_digit_sum(self,num):
            bit_sum = 0
            while num > 0:
                bit_sum += num%10
                num = num//10
            return bit_sum
    
        def movingCountCore(self,threshold,rows,cols,row,col,visited):
            count = 0
            if row >= 0 and col >= 0 
            and row < rows and col < cols 
            and self.get_digit_sum(row) + self.get_digit_sum(col) <= threshold 
            and not visited[row*cols + col]:
                visited[row*cols+col] = True
                count = 1 + self.movingCountCore(threshold, rows, cols, row-1, col, visited) + 
                            self.movingCountCore(threshold, rows, cols, row+1, col, visited) + 
                            self.movingCountCore(threshold, rows, cols, row, col-1, visited) + 
                            self.movingCountCore(threshold, rows, cols, row, col+1, visited)
            return count
  • 相关阅读:
    Java中的Java.lang.ThreadLocal类
    Java中线程的生命周期和状态
    Circular Linked List数据结构
    Linked List数据结构
    JVM如何工作
    JVM运行时数据区域
    queue数据结构
    stack数据结构
    Java中Set/HashSet的内部处理
    POJO,JavaBean 以及他们之间的区别
  • 原文地址:https://www.cnblogs.com/vercont/p/10210367.html
Copyright © 2011-2022 走看看