leetcode-130. Surrounded Regions

来源:互联网 发布:北球电磁炉淘宝不能卖 编辑:程序博客网 时间:2024/06/14 04:23

这道题见鬼了,为什么我的代码中,dfs()函数里,注释掉的代码可以AC,但是现在的代码跑就是Runtime Error呢?

class Solution {public:    void dfs(vector<vector<char>> &board, int row, int clo) {        int m=board.size(), n = board[0].size();        /*if (board[row][clo]=='O'){        board[row][clo] = 'a';        if (row > 1) {            dfs(board, row-1, clo);        }        if (clo > 1)            dfs(board, row, clo-1);        if (row <m-1)            dfs(board, row+1, clo);        if (clo < n-1)            dfs(board, row, clo+1);        }*/        if (row<0||row>=m || clo<0||clo>=n || board[row][clo]=='a')            return;        if (board[row][clo]=='O') {            board[row][clo] = 'a';            dfs(board, row-1, clo);            dfs(board, row, clo-1);            dfs(board, row, clo+1);            dfs(board, row+1, clo);        }    }    void dfs_1(vector<vector<char>> &board, int row, int clo) {        int m=board.size(), n = board[0].size();        if (row<1||row>=m-1 || clo<1||clo>=n-1)            return;        if (board[row][clo] == 'O'){            board[row][clo] = 'X';        }    }    void dfs_2(vector<vector<char>> &board, int row, int clo) {        int m=board.size(), n = board[0].size();        if (board[row][clo]=='a'){        board[row][clo] = 'O';        if (row > 1) {            dfs(board, row-1, clo);        }        if (clo > 1)            dfs(board, row, clo-1);        if (row <m-1)            dfs(board, row+1, clo);        if (clo < n-1)            dfs(board, row, clo+1);        }    }    void solve(vector<vector<char>>& board) {        if (board.size()==0 || board[0].size()==0||board.size()==1 || board[0].size()==1        ||board.size()==2 || board[0].size()==2)            return;        int m=board.size(), n = board[0].size();        //cout<<0<<endl;        for (int i=0; i<m; i++) {            dfs(board, i, 0);            dfs(board, i, n-1);        }        //cout<<"?"<<endl;        for (int i=0; i<n; i++) {            dfs(board, 0, i);            dfs(board, m-1, i);        }        //cout<<1<<endl;        for (int i=1; i<m-1; i++) {            for (int j=1; j<n-1; j++) {                if (board[i][j] == 'O'){                     board[i][j] = 'X';                }                //cout<<3<<endl;            }            //cout<<2<<endl;        }        /*        cout<<1<<endl;        for (int i=0; i<m; i++) {            dfs_2(board, i, 0);            dfs_2(board, i, n-1);        }        for (int i=0; i<n; i++) {            dfs_2(board, 0, i);            dfs_2(board, m-1, i);        }*/        for (int i=0; i<m; i++) {            for (int j=0; j<n; j++) {                if (board[i][j] == 'a'){                     board[i][j] = 'O';                }                //cout<<3<<endl;            }            //cout<<2<<endl;        }        return;    }};
0 0
原创粉丝点击