poj解题报告——2386

来源:互联网 发布:张艺兴发展前景知乎 编辑:程序博客网 时间:2024/06/13 23:09

        题意:给你一个row*col的矩阵表示一块田地,上面的'W'代表积水,'.'表示干地,问这块田地里面的积水能汇聚成几片水洼。

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int n,m,ans;char g[110][110];bool jud(int i,int j){    if(i>=n||i<0)return false;    if(j>=m||j<0)return false;    if(g[i][j]=='.') return false;    return true;}void dfs(int i,int j){    g[i][j]='.';    if(jud(i+1,j)) dfs(i+1,j);    if(jud(i,j+1))dfs(i,j+1);    if(jud(i-1,j))dfs(i-1,j);    if(jud(i,j-1))dfs(i,j-1);    if(jud(i+1,j+1))dfs(i+1,j+1);    if(jud(i-1,j-1)) dfs(i-1,j-1);    if(jud(i+1,j-1)) dfs(i+1,j-1);    if(jud(i-1,j+1)) dfs(i-1,j+1);}int main(){    while(cin>>n>>m)    {        gets(g[0]); ans=0;int i;        for(i=0;i<n;i++)gets(g[i]);        for(i=0;i<n;i++)        {            for(int j=0;j<m;j++)            {                if(g[i][j]=='W')                {                    ans++;                    dfs(i,j);                }            }        }        cout<<ans<<endl;    }    return 0;}


0 0