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; } };