#include<vector>
#include<iostream>
using namespace std;
class Solution {
public:
void setOne(vector<vector<char>> &grid, int row, int col) {
int m = grid.size();
int n = grid[0].size();
if ((row<0) || (row >= m) || (col<0) || (col >= n) || (grid[row][col] != '1')) {
return;
}
grid[row][col] = 2;
setOne(grid, row + 1, col);
setOne(grid, row - 1, col);
setOne(grid, row, col + 1);
setOne(grid, row, col - 1);
}
int numIslands(vector<vector<char>>& grid) {
int m = grid.size();
if (m == 0) return 0;
int n = grid[0].size();
if (n == 0) return 0;
int sum = 0;
for (int i = 0; i<m; i++) {
for (int j = 0; j<n; j++) {
if (grid[i][j] == '1') {
sum++;
setOne(grid, i, j);
}
}
}
return sum;
}
};
int main() {
Solution sol;
int M;
cin >> M;
vector<vector<char> > array(M);
for (int i = 0; i<M; i++) {
array[i].resize(M);
}
for (int i = 0; i < array.size(); i++)
{
for (int j = 0; j < array[0].size(); j++)
{
cin >> array[i][j];
}
}
int res = sol.numIslands(array);
cout << res;
}
孤岛问题
猜你喜欢
转载自blog.csdn.net/xiziyunqi/article/details/82622101
今日推荐
周排行