Q80038 - C++编程预备组选择题38
统计题目( 单选题 )
以下DFS代码用于查找最大连通陆地区域的大小其中1表示陆地,0表示水域,区域由水平或垂直方向上相邻的1连接而成。缺少的程序应为.
#include <iostream>
#include <vector>
using namespace std;
int dfs(vector<vector<int>>& grid, int i, int j) {
int n = grid.size(), m = grid[0].size();
if (i < 0 || i >= n || j < 0 || j >= m || grid[i][j] == 0)
return 0;
grid[i][j] = 0;
int area = 1;
area += dfs(grid, i+1, j);
area += dfs(grid, i-1, j);
area += dfs(grid, i, j+1);
area += dfs(grid, i, j-1);
return area;
}
int maxArea(vector<vector<int>>& grid) {
int maxArea = 0;
for (int i = 0; i < grid.size(); i++) {
for (int j = 0; j < grid[0].size(); j++) {
if (grid[i][j] == 1) {
maxArea = _____________;
}
}
}
return maxArea;
}
int main() {
vector<vector<int>> grid = {
{1, 1, 0, 0, 0},
{1, 1, 0, 1, 1},
{0, 0, 0, 1, 1},
{0, 0, 0, 1, 1}
};
cout << maxArea(grid) << endl;
return 0;
}

关注我们