题目
给一个01矩阵,求不同的岛屿的个数。
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
思路
遍历,然后为1 改为0,检查周边,注意判断是否可以+、-1,是否为边界
递归遍历周围ps: 这里表面上先对于某一个值为1的点,先遍历四周,还是先置为0,貌似是一样的;但是在实际代码实现的时候,这二者是有区别的。
对于有值为1的点相邻的情况下,如果是先递归寻找的话,会导致下一层的递归找到的点是原来找过的。会造成循环递归,而没有终止条件,最终导致内存溢出,导致程序崩溃。
先将找到的点置为0就不会有上述问题的存在。
代码
#include<stdio.h>
void IslandsCore(int (&grid)[5][5], int i, int j,int m,int n)
{
grid[i][j]=0;
if(i>1&&grid[i-1][j]==1)
Islands