#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 判断岛屿数量
# @param grid char字符型二维数组 
# @return int整型
#
class Solution:
    def solve(self , grid ):
        # write code here
        cnt = 0
        n1 = len(grid)
        n2 = len(grid[0])
        for i in range(0, n1):
            for j in range(0, n2):
                if grid[i][j] == '1':
                    cnt += 1
                    self.dfs(i, j, grid)
        print ("Total cnt: ", cnt)
        return cnt
    
    def dfs(self, i, j, grid):
        n1 = len(grid)
        n2 = len(grid[0])
        grid[i][j] = '0'
        #dfs 4 directions
        if i - 1 >= 0 and grid[i - 1][j] == '1':
            self.dfs(i - 1, j, grid) 
        if i + 1 < n1 and grid[i + 1][j] == '1':
            self.dfs(i + 1, j, grid) 
        if j - 1 >= 0 and grid[i][j - 1] == '1':
            self.dfs(i, j - 1, grid) 
        if j + 1 < n2 and grid[i][j + 1] == '1':
            self.dfs(i, j + 1, grid) 

        return