联通快(dfs暴力)全球变暖

#include <iostream>
#define maxn 105
using namespace std;
char mapp[maxn][maxn];
bool book[maxn][maxn];
int n,res;
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool check(int i,int j)
{
    for(int k=0;k<=3;k++)
    {
        int tx=i+next[k][0];
        int ty=j+next[k][1];
        if(tx<0||ty<0||tx>=n||ty>=n)
            continue;
        if(mapp[tx][ty]=='.')
        {
            return false;
        }
    }
    return true;
}
void dfs(int x,int y)
{
    for(int k=0;k<=3;k++)
    {
        int tx=x+next[k][0];
        int ty=y+next[k][1];
        if(tx<0||ty<0||tx>=n||ty>=n)
            continue;
        if(mapp[tx][ty]=='#')
        {
            mapp[tx][ty]='.';
            dfs(tx,ty);
        }
    }
}
int main()
{

    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>mapp[i];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(mapp[i][j]=='#'&&check(i,j)==false)
                book[i][j]=true;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(book[i][j]==true)
                mapp[i][j]='.';
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(mapp[i][j]=='#')
            {
                mapp[i][j]='.';
                dfs(i,j);
                res++;
            }
        }
    }
    cout << res << endl;
    return 0;
}
/*
.......
.##....
.##....
....##.
..####.
...###.
.......
*/

猜你喜欢

转载自blog.csdn.net/wwwlps/article/details/79975668