欢迎光临散文网 会员登陆 & 注册

P1596 [USACO10OCT]Lake Counting S

2023-03-14 15:20 作者:仓鼠翞  | 我要投稿

#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++)
   {
           //从是有水塘的位置开始深搜
           if(g[i][j]=='W')
           {
               g[i][j]='.';
               shensou(i,j);
               ans++;
           }
   }
   cout<<ans;
   return 0;
}

P1596 [USACO10OCT]Lake Counting S的评论 (共 条)

分享到微博请遵守国家法律