用c语言写代码求最大岛屿问题
时间: 2023-04-01 07:02:00 浏览: 142
最大团问题C语言实现
4星 · 用户满意度95%
好的,我可以回答这个问题。最大岛屿问题是指在一个由 和 1 组成的矩阵中,找到由 1 组成的最大连通块的大小。可以使用深度优先搜索或广度优先搜索来解决这个问题。以下是一个使用深度优先搜索的 C 语言代码示例:
```
#include <stdio.h>
#define MAX_ROW 100
#define MAX_COL 100
int grid[MAX_ROW][MAX_COL];
int visited[MAX_ROW][MAX_COL];
int dfs(int row, int col, int row_size, int col_size) {
if (row < || row >= row_size || col < || col >= col_size || visited[row][col] || !grid[row][col]) {
return ;
}
visited[row][col] = 1;
return 1 + dfs(row - 1, col, row_size, col_size) + dfs(row + 1, col, row_size, col_size) + dfs(row, col - 1, row_size, col_size) + dfs(row, col + 1, row_size, col_size);
}
int max_island(int row_size, int col_size) {
int max_size = ;
for (int i = ; i < row_size; i++) {
for (int j = ; j < col_size; j++) {
if (!visited[i][j] && grid[i][j]) {
int size = dfs(i, j, row_size, col_size);
if (size > max_size) {
max_size = size;
}
}
}
}
return max_size;
}
int main() {
int row_size, col_size;
scanf("%d %d", &row_size, &col_size);
for (int i = ; i < row_size; i++) {
for (int j = ; j < col_size; j++) {
scanf("%d", &grid[i][j]);
}
}
printf("%d\n", max_island(row_size, col_size));
return ;
}
```
阅读全文