• 2018蓝桥杯 全球变暖(dfs)


    你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:
    .......
    .##....
    .##....
    ....##.
    ..####.
    ...###.
    .......
    其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。  
    由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。  
    例如上图中的海域未来会变成如下样子:
    .......
    .......
    .......
    .......
    ....#..
    .......
    .......

    请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。  

    【输入格式】
    第一行包含一个整数N。  (1 <= N <= 1000)  

    以下N行N列代表一张海域照片。  

    照片保证第1行、第1列、第N行、第N列的像素都是海洋。

      【输出格式】

    一个整数表示答案

    比较害怕这种问题,所以没敢写。

    困惑点:

    1 如何判断有几个岛屿?想用dfs判断,做多遍dfs。这个思路是对的,其实我们用两个for循环搜索第一个未被访问过的#, 做dfs就好。

    2 怎么把每个岛屿记录下来?之后判断岛屿是否会被全部淹没。但是其实这个过程我们可以在找岛屿的过程中就进行判断,判断在该岛屿中是否存在一个点#,它的四周都是#

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int mp[110][110];
    int ans[11000];
    bool vis[110][110];
    void dfs(int x,int y,int k)
    {
        if(mp[x][y]=='.')
            return;
        if(vis[x][y])
            return;
        vis[x][y]=1;
        if(mp[x-1][y]=='#'&&mp[x+1][y]=='#'&&mp[x][y-1]=='#'&&mp[x][y+1]=='#')
            ans[k]++;
        dfs(x+1,y,k);
        dfs(x-1,y,k);
        dfs(x,y-1,k);
        dfs(x,y+1,k);
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            getchar();
            for(int j=1;j<=n;j++)
                scanf("%c",&mp[i][j]);
    
        }
        int len=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(mp[i][j]=='#'&&!vis[i][j])
                {
                    dfs(i,j,len);
                    len++;
                }
            }
        }
        int sum=0;
        for(int i=0;i<len;i++)
            if(ans[i]==0)
                sum++;
        printf("%d
    ",sum);
    }
  • 相关阅读:
    解决linux下svn update 产生Node remains in conflict的问题
    实现本地svn目录同步时,服务器的相应目录保持自动同步
    linux下搭建SVN
    linux下安装pip与pip安装
    CentOS7下将Python的版本升级为3.7
    Linux基础二:初识linux命令
    泛型数组 + 记录类型 + Json 之间的转换
    TDictionary字典 记录 的赋值。
    TDictionary字典 对象的释放。。。
    基于 Intraweb 和 JQuery 的开发套件
  • 原文地址:https://www.cnblogs.com/flightless/p/8718443.html
Copyright © 2020-2023  润新知