P1596 [USACO10OCT]Lake Counting S
#include<bits/stdc++.h>
using namespace std;
int n,m;
char g[101][101];
int ans=0;
void shensou(int x,int y)
{
? ?if(x<0||y<0||x>n||y>m)
? ? ? ?return;
? ?if(g[x+1][y]=='W')
? ?{
? ? ? ?//下一格
? ? ? ?g[x+1][y]='.';
? ? ? ?shensou(x+1,y);
? ?}
? ?if(g[x-1][y]=='W')
? ?{
? ? ? ?//上一格
? ? ? ?g[x-1][y]='.';
? ? ? ?shensou(x-1,y);
? ?}
? ?if(g[x][y+1]=='W')
? ?{
? ? ? ?//右一格
? ? ? ?g[x][y+1]='.';
? ? ? ?shensou(x,y+1);
? ?}
? ?if(g[x][y-1]=='W')
? ?{
? ? ? ?//左一格
? ? ? ?g[x][y-1]='.';
? ? ? ?shensou(x,y-1);
? ?}
? ?if(g[x+1][y+1]=='W')
? ?{
? ? ? ?//右下
? ? ? ?g[x+1][y+1]='.';
? ? ? ?shensou(x+1,y+1);
? ?}
? ?if(g[x+1][y-1]=='W')
? ?{
? ? ? ?//左下
? ? ? ?g[x+1][y-1]='.';
? ? ? ?shensou(x+1,y-1);
? ?}
? ?if(g[x-1][y-1]=='W')
? ?{
? ? ? ?//左上
? ? ? ?g[x-1][y-1]='.';
? ? ? ?shensou(x-1,y-1);
? ?}
? ?if(g[x-1][y+1]=='W')
? ?{
? ? ? ?//右上
? ? ? ?g[x-1][y+1]='.';
? ? ? ?shensou(x-1,y+1);
? ?}
}
int main()
{
? ?cin>>n>>m;
? ?for(int i=0;i<n;i++)
? ? ? ?for(int j=0;j<m;j++)
? ? ? ? ? ?cin>>g[i][j];
? ?for(int i=0;i<n;i++)
? ? ? ?for(int j=0;j<m;j++)
? ?{
? ? ? ? ? ?//從是有水塘的位置開(kāi)始深搜
? ? ? ? ? ?if(g[i][j]=='W')
? ? ? ? ? ?{
? ? ? ? ? ? ? ?g[i][j]='.';
? ? ? ? ? ? ? ?shensou(i,j);
? ? ? ? ? ? ? ?ans++;
? ? ? ? ? ?}
? ?}
? ?cout<<ans;
? ?return 0;
}