小藍(lán)得到了一副大小為 M × N 的格子地圖,可以將其視作一個只包含字符‘0’(代表海水)和 ‘1’(代表陸地)的二維數(shù)組,地圖之外可以視作全部是海水,每個島嶼由在上/下/左/右四個方向上相鄰的 ‘1’ 相連接而形成。
在島嶼 A 所占據(jù)的格子中,如果可以從中選出 k 個不同的格子,使得他們的坐標(biāo)能夠組成一個這樣的排列:(x0, y0),(x1, y1), . . . ,(xk?1, yk?1),其中(x(i+1)%k , y(i+1)%k) 是由 (xi , yi) 通過上/下/左/右移動一次得來的 (0 ≤ i ≤ k ? 1),
此時這 k 個格子就構(gòu)成了一個 “環(huán)”。如果另一個島嶼 B 所占據(jù)的格子全部位于這個 “環(huán)” 內(nèi)部,此時我們將島嶼 B 視作是島嶼 A 的子島嶼。若 B 是 A 的子島嶼,C 又是 B 的子島嶼,那 C 也是 A 的子島嶼。
請問這個地圖上共有多少個島嶼?在進(jìn)行統(tǒng)計時不需要統(tǒng)計子島嶼的數(shù)目。