用c++写一个求孤岛面积的程序
时间: 2023-03-01 21:10:37 浏览: 114
下面是一个求孤岛面积的 C 语言代码:
```
#include <stdio.h>
#define ROWS 10
#define COLS 10
int map[ROWS][COLS]={
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,1,1,0,0,0,0},
{0,0,0,1,1,1,0,0,0,0},
{0,0,0,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
};
int dfs(int x,int y){
if(x<0 || x>=ROWS || y<0 || y>=COLS || map[x][y]!=1)
return 0;
map[x][y]=0;
int ans=1;
ans+=dfs(x-1,y);
ans+=dfs(x,y-1);
ans+=dfs(x+1,y);
ans+=dfs(x,y+1);
return ans;
}
int main(){
int i,j;
int sum=0;
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
if(map[i][j]==1)
sum+=dfs(i,j);
printf("The area of the island is: %d\n",sum);
return 0;
}
```
此代码中使用了深度优先搜索 (DFS) 的思想,通过遍历地图中的每一个位置,如果该位置为 `1`,则从这里开始执行 DFS,并递归地遍历周围四个位置,如果该位置为 `1` 则继续遍历,否则结束遍历,最后得到的孤岛的面积就是 DFS 方法返回的面积之