• 机器人的运动范围 牛客网 剑指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
  • 相关阅读:
    windows 内存泄露和资源泄漏调试
    window驱动
    Direct2D教程(七)单色画刷
    Direct2D教程(三)简单几何图形
    求反射向量
    Visual Studio 2012中使用自定义project properties
    View Transform(视图变换)详解
    八进制字符与十六进制字符
    Direct2D教程(四)Path Geometry
    C++默认构造函数
  • 原文地址:https://www.cnblogs.com/vercont/p/10210367.html
Copyright © 2020-2023  润新知