本文共 1429 字,大约阅读时间需要 4 分钟。
public class Solution { public int movingCount(int threshold, int rows, int cols) { boolean[] flag = new boolean[rows * cols]; return help2(threshold, rows, cols, 0, 0, flag); } //help2()返回1表示此处可以走 0表示此处走不通 public int help2(int threshold, int rows, int cols, int rowIndex, int colIndex, boolean[] flag) { if(!(0 <= rowIndex && rowIndex < rows && 0 <= colIndex && colIndex < cols)) { return 0; } int index = rowIndex * cols + colIndex; if(flag[index] == true) { //该处走过了 return 0; } if(help2(rowIndex) + help2(colIndex) > threshold) { //不满足题目所说 return 0; } //可以走了 flag[index] = true; return help2(threshold, rows, cols, rowIndex + 1, colIndex, flag) + help2(threshold, rows, cols, rowIndex - 1, colIndex, flag) + help2(threshold, rows, cols, rowIndex, colIndex + 1, flag) + help2(threshold, rows, cols, rowIndex, colIndex - 1, flag) + 1; } public int help2(int i) { int sum = 0; do{ sum += i % 10; }while((i = i / 10) > 0); return sum; }}
转载地址:http://svhzi.baihongyu.com/