机器人的运动范围TopicDescription地面上有一个m行n列的正方形。机器人从坐标0和0的格子开始移动,每次只能向左、右、上、下移动一个格子,不能进入行坐标和数字之和的格子。列坐标大于k。例如,当k为18时,机器人可以进入(35,37)方格,因为3+5+3+7=18。但是不能进入(35,38)方格,因为3+5+3+8=19.机器人能到达多少个格子?题目链接:机器人的运动范围代码/***题目:机器人的运动范围*题目描述*地面上有一个m行n列的正方形。机器人从坐标0,0的格子开始移动,每次只能向左、右、上、下四个方向移动一个格子,不能进入行坐标的位数*之和的格子并且列坐标大于k。例如,当k为18时,机器人可以进入(35,37)方格,因为3+5+3+7=18。但是不能进入(35,38)方格,因为3+5+3+8=19.*机器人能到达多少个格子?*问题链接:*https://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8?tpId=13&&tqId=11219&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking*/publicclassJz66{privatestaticfinalint[][]next={{0,-1},{0,1},{-1,0},{1,0}};私人intcnt=0;私有整数行;私人int列;私有整数阈值;私人int[][]数字总和;/***深度优先搜索(DFS)*回溯是深度优先搜索的一种特例,它需要设置一些当前搜索过程的局部状态,并在本次搜索结束后清空状态。*普通的深度优先搜索不需要使用这些局部状态,虽然设置一些全局状态还是可以的。**@paramthreshold*@paramrows*@paramcols*@return*/publicintmovingCount(intthreshold,introws,intcols){this.rows=rows;this.cols=cols;this.threshold=阈值;初始化数字总和();布尔[][]标记=新布尔[行][列];dfs(标记,0,0);返回cnt;}privatevoiddfs(boolean[][]marked,intr,intc){if(r<0||r>=rows||c<0||c>=cols||marked[r][c]){返回;}标记[r][c]=true;如果(this.digitSum[r][c]>this.threshold){返回;}cnt++;for(int[]n:next){dfs(标记,r+n[0],c+n[1]);}}privatevoidinitDigitSum(){int[]digitSumOne=newint[Math.max(rows,cols)];对于(inti=0;i
