迴圈
輸入地圖
由左而右上而下搜尋領土
利用遞迴求出領土面積,並判別東南西北
輸出
#include<cstdio>
#include<iostream>
using namespace std;
char island[512][512];
int west, north, east, south;
int area;
int X, Y;
void setTerr();
void terr(int x, int y);
int main(){
while(~scanf("%d%d", &X, &Y))
{
setTerr();
for(int tmpY = 0; tmpY<Y; tmpY++)
for(int tmpX = 0; tmpX<X; tmpX++)
{
if(island[tmpY][tmpX] == '0')
continue;
west = north = 256;
east = south = 0;
area = 0;
terr(tmpX, tmpY);
printf("%d %d %d %d %d\n", west, north, east, south, area);
}
}
return 0;
}
void setTerr()
{
for(int j = 0; j<Y; j++)
for(int i = 0; i<X; i++)
scanf(" %c", &island[j][i]);
}
void terr(int x, int y)
{
if(y < 0 || y >= Y || x < 0 || x >= X || island[y][x] == '0') return;
if(x < west || x > east || y < north || y > south)
{
if(x < west)
west = x;
if(x > east)
east = x;
if(y < north)
north = y;
if(y > south)
south = y;
}
area ++;
island[y][x] = '0';
terr(x-1, y);
terr(x+1, y);
terr(x, y-1);
terr(x, y+1);
return;
}