Leetcode Surrounded Regions

Surrounded Regions

DFS

 

class Solution {
public:
    void solve(vector<vector<char>> &board)
    {
        int n=board.size();
        if(n==0)return;
        for(int i = 1; i < n- 1; i++)
        {
            dfs(board, i, 0);        
            dfs(board, i, n-1);    
        }      
        for(int j = 0; j < n; j++){
            dfs(board,0,j);        
            dfs(board,n-1,j);    
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(board[i][j]=='O')board[i][j]='X';
                if(board[i][j]=='C')board[i][j]='O';
                
            }
        }        
    }
    void dfs(vector<vector<char>> &board,int x,int y)
    {
        if(x<0||x>board.size()-1||y<0||y>board.size()-1)
        {
            return;
        }    
        if(board[x][y]=='O')
        {
            board[x][y]='C';
            dfs(board,x+1,y);
            dfs(board,x-1,y);
            dfs(board,x,y+1);
            dfs(board,x,y-1);
        }
    }
};

 

 在dfs函数中,开始写的是dfs(vector<vector<char>> &board,int x,int y,int n)n为数组长度,导致judge large 最后一条记录runtime error。推测是递归次数太多

参数过多导致栈溢出。

另外初始的时候添加了一个数组标志是否已访问导致内存溢出。

 

posted @ 2013-06-09 00:17  代码改变未来  阅读(1337)  评论(0编辑  收藏  举报