using namespace std;
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 获取最大连通区域
* @param data int整型vector<vector<>> 二维数组
* @return int整型
*/
int getMaxArea(vector<vector<int> >& data) {
// write code here
int ans = 0;
for (int i = 0; i != data.size(); ++i)
{
for (int j = 0; j != data[0].size(); ++j)
ans = max(ans, dfs(data, i, j));
}
return ans;
}
int dfs(vector<vector<int>>& grid, int cur_i, int cur_j) {
if (cur_i < 0 || cur_j < 0 || cur_i == grid.size() || cur_j == grid[0].size() || grid[cur_i][cur_j] != 1)
return 0;
grid[cur_i][cur_j] = 0;
int di[4] = {0, 0, 1, -1};
int dj[4] = {1, -1, 0, 0};
int ans = 1;
for (int index = 0; index != 4; ++index) {
int next_i = cur_i + di[index], next_j = cur_j + dj[index];
ans += dfs(grid, next_i, next_j);
}
return ans;
}
};
int main() {
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
vector<vector<int>> m = {
{1,1,0,0,0},
{1,0,1,0,0},
{0,1,1,0,0},
{0,0,0,1,0},
{0,0,0,0,1},
{0,0,0,0,0}
};
Solution s1;
int result;
result = s1.getMaxArea(m);
cout <<result<< endl;
return 0;
}