首页 > 代码库 > 合并油田

合并油田

#include<stdio.h>#include<string.h>#define N 111char str[N][N];int a,b;int dir[8][2]= {1,1,1,-1,-1,1,-1,-1,0,1,0,-1,1,0,-1,0}; //因为是上下左右和斜对角,所以是八个方向。void fbs(int x,int y){    int i,n,m;    for(i=0; i<8; i++)    {        n=x+dir[i][0];        m=y+dir[i][1];        if(n<0||m<0||n>a-1||m>b-1||str[n][m]==*)            continue;        str[n][m]=*;        fbs(n,m);    }}int main(){    int i,j,count;    while(scanf("%d%d",&a,&b),a||b)    {        count=0;        for(i=0; i<a; i++)            scanf("%s",str[i]);        for(i=0; i<a; i++)        {            for(j=0; j<b; j++)            {                if(str[i][j]==@)                {                    str[i][j]=*;                    fbs(i,j);                    count++;                }            }        }        printf("%d\n",count);    }    return 0;}