剑指offer实践 ——13.机器人运动范围(python版)

题目

思路

与矩阵路径的问题类似,这个问题可以从(0,0)开始出发,每次寻找当前格子周围的4个格子是否满足条件,满足条件,则将布尔矩阵中对应的值置为1,遍历完成后,对布尔矩阵求和。

题解

def jiqi_run_path(rows, cols, k):
    if rows <= 0 or cols <= 0 or k <= 0:
        return 0

    boolmatrix = [([0] * cols) for i in range(rows)]
    for i in range(rows):
        for j in range(cols):
            jiqi_run_next(rows, cols, i, j, k,boolmatrix)

    return sum([sum(x) for x in boolmatrix])


def jiqi_run_next( rows, cols, row, col, k,boolmatrix):

    if row < 0 or row >= rows or col < 0 or col >= cols:
        return False

    if get_sum(row)+get_sum(col) <= k and boolmatrix[row][col] == 0:
        boolmatrix[row][col] = 1

        has_nex = (jiqi_run_next(rows, cols, row+1, col, k,boolmatrix)
              or jiqi_run_next(rows, cols, row + 1, col, k, boolmatrix)
              or jiqi_run_next(rows, cols, row + 1, col, k, boolmatrix)
              or jiqi_run_next(rows, cols, row + 1, col, k, boolmatrix))

        if not has_nex:
            return False


def get_sum(num):
    sum = 0
    while num > 0:
        sum += num % 10
        num = num // 10
    return sum

print(jiqi_run_path(3,4, 2))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值