class Solution {
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
#include <iostream>
#include <fstream>
#include <string>
#define fas(i,a,b) for(int i=a;i<b;++i) //[)
#define fdes(i,b,a) for(int i=b;a<=i;--i) //[]
#define mm memset
#define ll long long
#define pi acos(-1)
void dfs(vector<vector<char> >& matrix,int m,int n,int i,int j)
{
if(check(m,n,i,j)==false || matrix[i][j]=='0')
{
return ;
}
// visit
matrix[i][j]='0';
dfs(matrix, m, n, i+1, j);
dfs(matrix, m, n, i-1, j);
dfs(matrix, m, n, i, j+1);
dfs(matrix, m, n, i, j+1);
dfs(matrix, m, n, i, j-1);
}
bool check(int m,int n,int i,int j)
{
if(i<0||m<=i||j<0||n<=j)
return false;
return true;
}
int solve(vector<vector<char> >& grid) {
// write code here
int m=grid.size(),n=grid[0].size();
int ans=0;
fas(i,0,m)
fas(j,0,n)
{
if(grid[i][j]=='1')
{
dfs(grid,m,n,i,j);
++ans;
}
}
return ans;
}
};