void solve(vector<vector<char>> &board) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     if(board.empty())
         return;
     int m = board.size();
     int n = board[0].size();
     set<Pair> hash;
     for(int i = 0; i < n; i++)
     {
         traverseDFS(board,0,i,m,n,hash);
         traverseDFS(board,m-1,i,m,n,hash);
     }
     for(int i = 1; i < m-1; i++)
     {
         traverseDFS(board,i,0,m,n,hash);
         traverseDFS(board,i,n-1,m,n,hash);
     }
     for(int i = 0; i < m; i++)
         for(int j = 0; j < n; j++)
         {
             if(board[i][j] == 'O')
                 board[i][j] = 'X';
             if(board[i][j] == 'D')
                 board[i][j] = 'O';
         }
 }
Beispiel #2
0
int searchController(Graph graph, int start, int stop, int option) {
	Dllist close;
	Dllist node;

	close = new_dllist();

	switch(option) {
		case BFS_SEARCH:
		breathFirstSearch(graph, start, stop, close);
		break;
		case BFS_TRAVERSE:
		traverseBFS(graph, start, close);
		break;
		case DFS_SEARCH:
		deepFirstSearch(graph, start, stop, close);
		break;
		case DFS_TRAVERSE:
		traverseDFS(graph, start, close);
		break;
		default:
		printf("This is not an option\n");
		free_dllist(close);
		return;
	}

	node = dll_first(close);
	printf("Visit %d\n", jval_i(node->val));

	free_dllist(close);
}
 void traverseDFS(vector<vector<char> >& board, int row, int col, int m, int n, set<Pair>& hash)
 {
     if(row >= 0 && row < m && col >= 0 && col < n)
     {
         if(hash.count(Pair(row,col)))
             return;
         hash.insert(make_pair(row,col));
         if(board[row][col] == 'O')
         {
             board[row][col] = 'D';
             traverseDFS(board,row+1,col,m,n,hash);
             traverseDFS(board,row,col+1,m,n,hash);
             traverseDFS(board,row-1,col,m,n,hash);
             traverseDFS(board,row,col-1,m,n,hash);
         }    
     }
 }