1.岛屿的个数
https://blog.csdn.net/qq_36136459/article/details/104326796
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。要求可以持续的工作
输入:
5 5
11110
11010
11000
00000
输出: 1
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define N 4
5 #define M 5
6
7 void DFS(int a[N][M],int i,int j)
8 {
9 a[i][j] = 0;
10 if(i-1>0 && a[i-1][j] == 1){
11 DFS(a,i-1,j);
12 }
13 if(i+1<N-1 && a[i+1][j] == 1){
14 DFS(a,i+1,j);
15 }
16 if(j-1>0 && a[i][j-1] == 1){
17 DFS(a,i,j-1);
18 }
19 if(j+1 <M-1 && a[i][j+1] == 1){
20 DFS(a,i,j+1);
21 }
22 }
23
24 int main()
25 {
26 int cout,i,j;
27 int a[N][M] = {{1,1,1,1,0},{1,1,0,1,0},{1,1,0,0,0},{0,0,0,0,0}};
28
29 for(i = 0;i<N;i++)
30 {
31 for(j = 0;j<M;j++)
32 {
33 if(1 == a[i][j])
34 {
35 DFS(a,i,j);
36 cout++;
37 }
38 }
39 }
40 printf("岛屿得到数量为%d\n",cout);
41
42 return 0;
43 }