难度**
思路
BFS + 剪枝
这题与数组匹配字符串相似,可以使用 BFS 算法解决问题。
public class NO13_The_range_of_motion_of_the_robot {public static void main(String[] args) {System.out.println(movingCount_1(3, 2, 17));}static int total = 0;public static int movingCount_1(int m, int n, int k) {if (k == 0)return 1;boolean[][] array = new boolean[m][n];doRecursion(0, 0, k, array);return total;}private static boolean doRecursion(int i, int j, int k, boolean[][] array) {if (i < 0 || i > array.length - 1 || j < 0 || j > array[0].length - 1 || array[i][j])return false;int sum = i / 10 + i % 10 + j / 10 + j % 10;if (sum > k)return false;// 记录array[i][j] = true;boolean ret = doRecursion(i - 1, j, k, array)|| doRecursion(i + 1, j, k, array)|| doRecursion(i, j - 1, k, array)|| doRecursion(i, j + 1, k, array);total++;return ret;}}
| 时间复杂度 | O(n) | | —- | —- | | 空间复杂度 | O(mn) |
| 时间复杂度 | O(n) | | —- | —- | | 空间复杂度 | O(1) |
