这是精华段落,dfs的函数;
void dfs(int x,int y)
{
int i,j,tx,ty;
int k[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
for(i=0;i<8;i++){
tx=k[i][0]+x;
ty=y+k[i][1];
if(tx>=0&&tx<W&&ty>=0&&ty<H&&mapp[tx][ty]=='W')
{
mapp[tx][ty]='.';
dfs(tx,ty);
}
}
}
这是全文。
#include <cstdio>
#include<stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
char mapp[1001][1001];
int W,H;
int step;
void dfs(int x,int y)
{
int i,j,tx,ty;
int k[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
for(i=0;i<8;i++){
tx=k[i][0]+x;
ty=y+k[i][1];
if(tx>=0&&tx<W&&ty>=0&&ty<H&&mapp[tx][ty]=='W')
{
mapp[tx][ty]='.';
dfs(tx,ty);
}
}
}
int main()
{
while(scanf("%d %d",&W,&H)!=EOF)
{
memset(mapp,0,sizeof(mapp));
int i,j;
for(i=0;i<W;i++)
{
scanf("%s",&mapp[i]);
}
step=0;
for(i=0;i<W;i++)
{
for(j=0;j<H;j++)
{
if(mapp[i][j]=='W')
{
dfs(i,j);
step++;
}
}
}
printf("%d\n",step);
}
}