地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
tips: 上下左右、深度优先遍历算法。注意继续遍历的条件,不能重复遍历至死循环。
# -*- coding:utf-8 -*-
class Solution:
def movingCount(self, threshold, rows, cols):
# write code here
direction=[[-1,0],[1,0],[0,-1],[0,1]]
res=[]
if rows*cols==1:
return 1
def main(i,j):
for d in direction:
ii=i+d[0]
jj=j+d[1]
if ii<rows and jj<cols and ii>=0 and jj>=0 and (sum([int(p) for p in str(ii)+str(jj)])<=threshold) and ([ii,jj] not in res):
res.append([ii,jj])
main(ii,jj)
return
main(0,0)
return len(res)