机器人可到达的总格数

xiaoxiao2021-02-28  122

 public int movingCount(int threshold, int rows, int cols) { //边界条件 if(rows <= 0||cols <= 0||threshold < 0) return 0; int[] num = {0};//保存可以到达的总格数 boolean[] visit = new boolean[rows*cols];//访问过的位置进行标记 countCore( threshold, rows,cols,0,0,num, visit); return num[0]; } private void countCore(int threshold,int rows,int cols,int r,int c,int[] num,boolean visit[]){ if(r>=0 && r < rows && c>=0 && c<cols && !visit[r*cols+c] && isSumBigThanK(r,c,threshold)) { num[0]++; visit[r*cols+c]=true; countCore(threshold, rows,cols,r+1,c, num,visit);//向上移动 countCore(threshold, rows,cols,r-1,c, num,visit);//向下移动 countCore(threshold, rows,cols,r,c+1, num,visit);//向右移动 countCore(threshold, rows,cols,r,c-1, num,visit);//向左移动 } } //该方法用来比较两个数的按位和是否超过阈值 private boolean isSumBigThanK(int r,int c,int k){ int num = 0;//保存总和 while(r!=0){ num+=r; r/=10; } while(c!=0){ num+=c; c /=10; } if(num<=k) return true; return false; }
转载请注明原文地址: https://www.6miu.com/read-21468.html

最新回复(0)