蓝桥杯2018省赛全球变暖dfs

全球变暖

问题描述


格式输入


格式输出

输出一个整数


样例输入


样例输出

1


评测用例规模与约定

  1. 最大运行时间:1s
  2. 最大运行内存: 256M

解析

采用dfs的方式进行搜索,首先输入地图之后进行搜索判断所有岛屿的数量,所有不会被淹没的岛屿的数量(因为只要有一块不和水相接就可以判断为是不会被淹没的所以才取它),然后相减即可得到被淹没的岛屿的数量。


参考程序

c 复制代码
#include<bits/stdc++.h>
using namespace std;
int n;
const int N = 1e4+4; 
char area[N][N];
bool flag;
int cnt; 
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//往四个方向走
int ans=0;//没有被淹没岛屿的数量 
int res=0;//岛屿的总数量 
//用DFS判断搜到的这个岛屿会不会被淹没
void dfs(int x,int y)
{
    if(flag==false){ //一个岛屿只要有一个点满足就不会变淹没了
        cnt = 0;
    for(int i=0; i<4; i++){
        int tx=d[i][0]+x;
        int ty=d[i][1]+y;
        if(area[tx][ty]!='.')
        cnt++;
    }
    if(cnt==4){//有一个点满足不会被淹没的条件
        ans++;
        flag=true;//这个岛屿不需要再遍历了
         }
    }
    area[x][y]='*';//将遍历过的点变为 *,下一次就不会遍历了,所以不用标记数组
    //注意这里不可以是'.'因为上面if(area[tx][ty]!='.')cnt++
     for(int i=0;i<4;i++){
         int xx = x + d[i][0];
         int yy = y + d[i][1];
         if(area[xx][yy]=='#'&&x<N&&x>=0&&y<N&&y>=0)
         dfs(xx,yy);
    }
}
 
int main()
{    
     cin>>n; 
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            cin>>area[i][j];
            
    for(int i=0; i<n; i++){ 
        for(int j=0; j<n; j++){
            if(area[i][j]=='#'){
                res++;
                flag=false;
                dfs(i,j);
            }
        }
    }        
    cout<<res-ans;    
    return 0;
}

以个人刷题整理为目的,如若侵权,请联系删除~

相关推荐
find1star12 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing13 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB211213 小时前
力扣160 21 86
算法·leetcode·职场和发展
小智老师PMP14 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN14 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a1879272183114 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤15 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate15 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran16 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分
闻缺陷则喜何志丹16 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统