编辑代码

#include <iostream>
#include <vector>
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;
}