/*
* Notes:
* similar with No.200 Number of Islands, suggest that you'd better finish No.200 firstly
* and than go back to this one. you will understand it easily.
*
*/
void set_bundary(char **board, int m, int n, int x, int y, char vst[m][n]) {
char tmp;
if(x<0 || x>m-1 || y<0 || y>n-1) {
return;
}
if(vst[x][y]) return;
vst[x][y] = 1;
if(board[x][y] == 'X') return;
board[x][y] = '*';
set_bundary(board, m, n, x-1, y, vst);
set_bundary(board, m, n, x+1, y, vst);
set_bundary(board, m, n, x, y-1, vst);
set_bundary(board, m, n, x, y+1, vst);
}
void solve(char** board, int boardSize, int* bcs){
int i,j;
if(!board || !boardSize || !bcs[0]) return;
char vst[boardSize][bcs[0]];
memset(vst, 0, sizeof(vst));
for(i=0; i<boardSize; i++){
for(j=0; j<bcs[i]; j++){
if(i==0 || i==boardSize-1 || j==0 || j==bcs[0]-1)
set_bundary(board, boardSize, bcs[i], i, j, vst);
}
}
for(i=0; i<boardSize; i++){
for(j=0; j<bcs[i]; j++){
if(board[i][j] == '*')
board[i][j] = 'O';
else
board[i][j] = 'X';
}
}
}
LeetCode-130-被围绕的区域-C语言
最新推荐文章于 2021-05-24 05:51:59 发布