int get(char** grid, int m, int n, char arr[m][n],int x, int y) {
/* out of the boards */
if(x<0 || x>=m || y<0 || y>=n)
return 0;
/* if current position is water */
if(arr[x][y] || grid[x][y] == '0')
return 0;
/* set current position visited */
arr[x][y] = 1;
/* visit neibo position */
get( grid, m, n, arr, x-1, y);
get( grid, m, n, arr,x+1, y);
get( grid, m, n, arr,x, y-1);
get( grid, m, n, arr,x, y+1);
return 1;
}
int numIslands(char** grid, int m, int* ns){
int i, j;
int cnt = 0;
if(!grid || !m || !ns[0]){
return 0;
}
char arr[m][ns[0]];
memset(arr, 0, sizeof(arr));
for(i=0; i<m; i++){
for(j=0; j<ns[0]; j++){
cnt += get( grid, m, ns[0], arr, i, j);
//printf("i=%d, j=%d, cnt = %d\n", i, j, cnt);
}
}
return cnt;
}
LeetCode-200-岛屿的个数-C语言
最新推荐文章于 2024-03-29 11:52:53 发布