题解 | #机器人的运动范围#
机器人的运动范围
http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
class Solution { public: int digitalSum(int num) { int sum = 0; while(num > 0) { sum += num % 10; num /= 10; } return sum; } int dfs(int threshold,int rows,int cols,int row,int col, vector<vector<bool>> &isVisited) { if (row < 0 || col < 0 || row >= rows || col >= cols || isVisited[row][col] || digitalSum(row) + digitalSum(col) > threshold) return 0; isVisited[row][col] = 1; return dfs(threshold, rows, cols, row - 1, col, isVisited) + dfs(threshold, rows, cols, row + 1, col, isVisited) + dfs(threshold, rows, cols, row, col - 1, isVisited) + dfs(threshold, rows, cols, row, col + 1, isVisited) + 1; } int movingCount(int threshold, int rows, int cols) { if(threshold < 0 || rows <= 0 || cols <= 0) return 0; vector<vector<bool>> isVisited(rows, vector<bool>(cols));//标记 return dfs(threshold, rows, cols, 0, 0, isVisited); } };