标签:amp com bool tor desc ble void ret span
题目链接:https://leetcode.com/problems/surrounded-regions/?tab=Description
题意:把非边界的O改成X。
先dfs边界的,打好标记。把没变的变成X后同时更新标记的为O。
1 class Solution { 2 public: 3 const int dx[5] = {0, 0, 1, -1}; 4 const int dy[5] = {1, -1, 0, 0}; 5 int n, m; 6 bool ok(int x, int y) { 7 return x >= 0 && x < n && y >= 0 && y < m; 8 } 9 void dfs(vector<vector<char>>& board, int x, int y) { 10 board[x][y] = ‘Q‘; 11 for(int i = 0; i < 4; i++) { 12 int xx = x + dx[i]; 13 int yy = y + dy[i]; 14 if(ok(xx, yy) && board[xx][yy] == ‘O‘) { 15 dfs(board, xx, yy); 16 } 17 } 18 } 19 void solve(vector<vector<char>>& board) { 20 n = board.size(); 21 if(n == 0) return; 22 m = board[0].size(); 23 for(int i = 0; i < n; i++) { 24 if(board[i][0] == ‘O‘) dfs(board, i, 0); 25 if(board[i][m-1] == ‘O‘) dfs(board, i, m-1); 26 } 27 for(int i = 0; i < m; i++) { 28 if(board[0][i] == ‘O‘) dfs(board, 0, i); 29 if(board[n-1][i] == ‘O‘) dfs(board, n-1, i); 30 } 31 for(int i = 0; i < n; i++) { 32 for(int j = 0; j < m; j++) { 33 if(board[i][j] == ‘O‘) board[i][j] = ‘X‘; 34 else if(board[i][j] == ‘Q‘) board[i][j] = ‘O‘; 35 } 36 } 37 } 38 };
[LeetCode]130 Surrounded Regions(DFS)
标签:amp com bool tor desc ble void ret span
原文地址:http://www.cnblogs.com/kirai/p/6533706.html