题解 | #机器人的运动范围#

机器人的运动范围

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

# -*- coding:utf-8 -*-


def canGet(matrix,i,j,rows,cols,thre):
    
    res=int(i/10)+i%10+int(j/10)+j%10
    if i<0&nbs***bsp;i>=rows&nbs***bsp;j<0&nbs***bsp;j>=cols:
        return False
    elif res>thre:
        return False
    if matrix[i*cols+j]:
        return False
    
    
    return True

def dfs(matrix,i,j,rows,cols,dirs,thre):
    cnt=0
    
    if(canGet(matrix,i,j,rows,cols,thre)):
        matrix[i*cols+j]=True
        cnt=1+dfs(matrix, i-1, j, rows, cols, dirs, thre)+dfs(matrix, i+1, j, rows, cols, dirs, thre)+dfs(matrix, i, j-1, rows, cols, dirs, thre)+dfs(matrix, i, j+1, rows, cols, dirs, thre)
        
    
    return cnt
    
    

class Solution:
    def movingCount(self, threshold, rows, cols):
        
        if threshold<0:
            return 0
        if threshold==0:
            return 1
        
        
        dirs=[[0,-1],[0,1],[-1,0],[1,0]]
#         cnt=0
        matrixh=[False]*(rows*cols)
#         for x in range(rows):
#             for y in range(cols):
#                 matrixh.append(0.0)
#         for m in range(rows):
#             for n in range(cols):
#                 matrix[m][n]=0
        i,j=0,0
        cnt=dfs(matrixh, i, j, rows, cols, dirs,threshold)
        return cnt

        
        
        
        # write code here

用DFS:
注意记录访问状态的matrix。我前几次一直用二维数组来存,但不知为何一直报错:TypeError: 'bool' object is not subscriptable。换成一维数组后就过了....
全部评论

相关推荐

10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务