/*想知道地图中有多少个独立的小岛,并对不同独立小岛染色
从(1,1)开始枚举,一直枚举到(n,m)
*/
#include "stdio.h"
int a[51][51],book[51][51];
int n,m,sum;
void dfs(int x,int y,int color)
{
//定义一个表示走的方向的数组
int next[4][2] = {
{0,1},{1,0},{0,-1},{-1,0}};//分别表示向右,向下,向左,向上走
int k,tx,ty;
a[x][y] = color;//对a[x][y]这个格子进行染色
//枚举四个方向
for(k = 0;k <= 3;k++)
{
//下一步的坐标
tx = x + next[k][0];
ty = y + next[k][1];
//判断是否是边界
if(tx < 1 || tx > n || ty < 1 || ty > m)
{
continue;
}
//判断是否为陆地或已经走过
if(a[tx][ty] > 0 && book[tx][ty] == 0)
{
sum++;
book[tx][ty] = 1;//标记这个点已经走过