棰樼洰寰堢畝鍗曪紝灝辨槸涓涓瓧絎﹂樀錛岀敱X鍜孫鏋勬垚錛屾壘鍑烘墍鏈塐鏋勬垚鐨勮繛閫氬尯鍩燂紝鑻ヨ鍖哄煙鎵鏈塐閮藉湪瀛楃闃靛唴閮?涓嶅湪杈圭晫涓?錛屽垯鎶婅榪為氬尯鍩熸墍鏈塐閮芥崲鎴怷錛屽叾浣欎笉鍙?br />
榪欓涓鐪嬪埌灝辨兂鐫鎬庝箞榪欎箞瑁哥殑DFS錛屼簬鏄兂涔熸病鎯蟲暡瀹岀洿鎺E錛岀湅RE榪斿洖鐨勬槸絀烘暟鎹紝浜庢槸鍔犱簡鍒oard涓虹┖鐨勮鍙ワ紝浜や笂鍘昏繕鏄疪E錛屽洜涓轟箣鍓嶅仛LeetCode榪欑RE鐨勬儏鍐甸兘鏄病鏈夊垽絀猴紝浜庢槸鎹簡N縐嶅啓娉曞垽絀猴紝榪樻槸RE
鍥犱負鏄紑浜嗕釜鏁扮粍璁板綍瀛楃闃墊瘡涓厓绱犳槸鍚﹁闂繃錛屽張寮浜嗗彟涓涓暟緇勫垽璇ヨ繛閫氬尯鍩熸槸鍚﹂偦杈癸紝鎯崇潃鏄笉鏄暟緇勫紑澶ぇ浜嗭紝浜庢槸璇曚簡鍚勭鏁扮粍澶у皬錛屽彂鐜板紑bool鍨嬶紝鍙紑涓涓暟緇勮兘榪囷紝鍚庢潵鎯沖埌鍏跺疄涓嶉渶瑕佸彟寮涓涓暟緇勮褰曟槸鍚﹂偦杈癸紝鎼滅殑鏃跺欏彧鎼滃洓杈逛笂涓篛鐨勯偅浜涗綅緗紝榪欐牱涓瀹氭槸閭昏竟鐨勶紝榪欎釜鏃墮棿澶嶆潅搴︿篃灝忎竴浜涳紝浜庢槸鏀逛簡錛岃繕鏄疪E錛岃屼笖鎸傚湪澶ф暟鎹笂錛屼絾鏄垜騫舵病鏈夊紑鏁扮粍錛屼笉浼氭湁瓚婄晫鍙戠敓錛岀劧鍚庡氨鍚勭鍚愯鐨勬敼鏉ユ敼鍘伙紝緇堜簬AC錛岃櫧鐒惰繕鏄緢鑾悕...涓哄暐涔嬪墠浼氭姤RE鍛紵
榪欐槸AC鐨勪唬鐮侊細
1 class Solution {
2 public:
3 void DFS(int x, int y, vector<vector<char>> &board) {
4 int tx, ty;
5 if(x >= board.size() || y >= board[0].size() || x < 0 || y < 0 || board[x][y] != 'O') return;
6 board[x][y] = 'Q';
7 DFS(x, y + 1, board);
8 DFS(x, y - 1, board);
9 DFS(x + 1, y, board);
10 DFS(x - 1, y, board);
11 }
12
13 void solve(vector<vector<char>> &board) {
14 if(board.empty()) return;
15 int row = board.size();
16 if(!row) return;
17 int col = board[0].size();
18 if(!col) return;
19 for(int i = 0; i < row; ++i) {
20 if(board[i][0] == 'O') DFS(i, 0, board);
21 if(board[i][col - 1] == 'O') DFS(i, col - 1, board);
22 }
23 for(int i = 0; i < col; ++i) {
24 if(board[0][i] == 'O') DFS(0, i, board);
25 if(board[row - 1][i] == 'O') DFS(row - 1, i, board);
26 }
27 for(int i = 0 ; i < row; ++i) {
28 for(int j = 0; j < col; ++j) {
29 if(board[i][j] == 'Q') board[i][j] = 'O';
30 else if(board[i][j] == 'O') board[i][j] = 'X';
31 }
32 }
33 }
34
35 };

]]>