题目描述:
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。要求可以持续的工作
输入:
5 5
11110
11010
11000
00000
输出: 1
难点1:手动输入二维数组,并将二维数组传入函数中。
//从键盘输入一个二维数组;
int row,col;
while(scanf("%d%d",&row,&col)!=EOF){
if(row==0||col==0){
break;
}
int land[row][col];
int *a[col];
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
scanf("%d",&land[i][j]);
}
}
//a[0]=&land[0][0];
for(int i=0;i<row;i++){
a[i]=land[i];
}
难点2:深度优先遍历,遍历1,遍历过后将1置为0
void DFS(int **tmp,int row,int col,int m,int n){
tmp[row][col]=0;
if(row-1>=0&&tmp[row-1][col]==1){
DFS(tmp,row-1,col,m,n);
}
if(