返回题解分享
讨论 / 题解分享/ 帖子详情

全球变暖(编程题) - 题解

#include<bits/stdc++.h>
using namespace std;
char a[1010][1010];
int vis[1010][1010]={0}, d[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };
int flag;
void dfs(int x, int y)
{
    vis[x][y] = 1;
    if (a[x + 1][y] != '.' && a[x - 1][y] != '.' && a[x][y + 1] != '.' && a[x][y - 1] != '.')
        flag = 1;
    for (int i = 0; i < 4; i++)
    {
        //int nx = x + d[i][0], ny = y + d[i][1];
        if (a[x + d[i][0]][y + d[i][1]] == '#' && vis[x + d[i][0]][y + d[i][1]] == 0)
            dfs(x + d[i][0],  y + d[i][1]);
    }
}
int main()
{
    int N;
    cin >> N;
    for (int i = 1; i <= N; i++)
        for (int j = 1; j <= N; j++)
        {
            cin >> a[i][j];
        }
    int ans=0;
    for (int i = 1; i <= N; i++)
        for (int j = 1; j <= N; j++)
        {
            if (a[i][j] == '#' && vis[i][j] == 0)
            {
                flag = 0;
                dfs(i, j);
                if (flag == 0)
                    ans++;
            }
        }
    cout << ans<<endl;
    return 0;
}
0 回复 0 转发 0 喜欢 0 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!