需要一份求解环绕区域的C语言代码
时间: 2024-03-04 18:48:59 浏览: 109
以下是一个简单的求解环绕区域的C语言代码,它使用了递归的方法:
```
#include <stdio.h>
#include <stdlib.h>
#define ROW 10
#define COL 10
int matrix[ROW][COL] = {
{0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
};
void find(int x, int y) {
if (x < 0 || x >= ROW || y < 0 || y >= COL || matrix[x][y] == 0) {
return;
}
matrix[x][y] = 0;
find(x + 1, y);
find(x - 1, y);
find(x, y + 1);
find(x, y - 1);
}
int main() {
int i, j, count = 0;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (matrix[i][j] == 1) {
count++;
find(i, j);
}
}
}
printf("The number of surrounding areas is: %d\n", count);
return 0;
}
```
这个代码使用了一个二维数组来表示矩阵,并且假设矩阵大小为10x10。它从左上角开始遍历整个矩阵,如果发现了一个值为1的元素,就通过递归的方式遍历它周围的元素,并将它们的值设为0,以此来标记已经遍历过的元素。重复这个过程,直到整个矩阵都被遍历过。最后,统计被标记的1的个数,即为环绕区域的数量。
阅读全文