首页 > 其他分享 >全球变暖蓝桥杯2018省赛真题

全球变暖蓝桥杯2018省赛真题

时间:2024-04-05 18:59:28浏览次数:31  
标签:cnt tx ty int 真题 dfs 蓝桥 2018 ans

全球变暖蓝桥杯2018省赛真题

DFS大法

全球变暖

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
#define int long long
bool flag;
char a[1010][1010];
int cnt,n,ans=0,pre_ans=0,d[4][2]= {1,0,-1,0,0,1,0,-1};
void dfs(int x,int y){
    if(x>=n||x<0||y>=n||y<0||a[x][y]!='#')return;
    if(flag==false){
        cnt=0;
        for(int i=0; i<4; i++){
            int tx=x+d[i][0],ty=y+d[i][1];
            if(tx<n&&tx>=0&&ty<n&&ty>=0&&a[tx][ty]!='.')cnt++;
        }
        if(cnt==4){
            ans++;//最后不会被淹没的点+1
            flag=true;//当前岛屿是不可以被淹没的
        }
    }
    a[x][y]='*';//已经探索的岛屿标记成'*'
    for(int i=0; i<4; i++){
        int tx=x+d[i][0],ty=y+d[i][1];
        dfs(tx,ty);
    }
}
signed main(){
    cin>>n;
    for(int i=0; i<n; i++)cin>>a[i];//注意输入的是字符串
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)//如被找到是同一岛则会被标*,不回溯,只有#才是未被搜索的岛屿的一角
            if(a[i][j]=='#'){
                pre_ans++;//那么岛屿数目加1
                flag=false;//假设会淹没
                dfs(i,j);//回溯标记这个岛屿的所有点的坐标,并且如果不会被完全的淹没,那么就标记
            }
    cout<<pre_ans-ans;//原始的岛屿数-剩下岛屿数=被淹没岛屿数
}

标签:cnt,tx,ty,int,真题,dfs,蓝桥,2018,ans
From: https://blog.csdn.net/2302_79519348/article/details/137406603

相关文章

  • 二级Java第二套真题(乱序)含详细解析
    有些程序代码可能是错的代码一.单选题(共40题,40分)1. (单选题,1分)下列代码段运行的结果是()Set<Integer>set1=newHashSet<Integer>(5);Set<Integer>set2=newHashSet<Integer>(8);for(inti=0;i<5;i++)set1.add(2*i+3);for(inti=0;i<8;i++)set2.add(i);Set<......
  • 蓝桥杯备考随手记: 常用的三种排序算法(冒泡排序、插入排序、选择排序)
    1.冒泡排序(BubbleSort)冒泡排序是一种简单直观的排序算法,在待排序序列中不断地交换相邻两个元素的位置,通过多次遍历,将最大(或最小)的元素逐渐向右(或左)移动到正确的位置,直到整个序列有序。冒泡排序的基本思想如下:从序列的第一个元素开始,比较相邻两个元素的大小。如果前一个元......
  • 第15届蓝桥STEMA测评真题剖析-2024年3月10日Scratch编程初中级组
    [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第180讲。第15届蓝桥第5次STEMA测评,这是2024年3月10日举办的STEMA,比赛仍然采取线上形式。这是Scratch初/中级组真题,试题包括两种题型,分别是选择题和编程创作......
  • 蓝桥杯,省赛,dfs专题,地宫取宝,小朋友崇拜圈,飞机降落
    #include<bits/stdc++.h>usingnamespacestd;intn,m,k;inta[55][55];//输入所给数组值所分配的内存空间intdp[55][55][15][15];//开创记忆化的存储空间//因为只进行向下走和向右走,所有写成这个样子,不明白的可以在了解以下笛卡尔积,向下是x轴,向右是y轴(一般情况下)int......
  • P8687 [蓝桥杯 2019 省 A] 糖果
    原题链接题解二进制表示每包糖果包含的味道,因为有一种拼接的感觉,然后背包dp,注意这里每个材料不止只能取一个code#include<bits/stdc++.h>usingnamespacestd;intdp[1<<22]={0},candy[105]={0};constintinf=2e9;intmain(){intn,m,k;cin>>n>>m>>k;......
  • [蓝桥杯 2022 国 A] 环境治理(二分 + 弗洛伊德)
        通过题目描述,我们得知如果枚举所有的天数,就不会通过所有的样例,因此我们可以通过二分来列举符合要求的天数,并且我们知道两个城市之间衡量的灰尘度标准就是灰尘度总和最小的那一段路径,也就是说我们需要寻找到权值和最低的那条路径,而我们知道每两个点之间都有路径......
  • 【蓝桥杯选拔赛真题56】C++求位数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编
    目录C++求位数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++求位数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现给定一个正整数N(1<N<10^8),输出N为几位数2、......
  • PYTHON蓝桥杯——每日一练(简单题)
    题目查找整数给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(......
  • 蓝桥杯第十三届单片机省赛真题(IAP15F2K61S2)
    一、题目二、题目分析1、难点(笔者个人认为)(1)s17按键短按和长按的设置不同,界面不同s17短按在参数界面需要把温度参数-1;s17长按在时间界面需要显示分,秒界面;所以笔者这里把两个数码管显示分两个函数voidNixie_Show()//数码管显示函数{ Nixie_pos_num(1,16); Nixie_po......
  • 小美的蛋糕切割(美团2024届秋招笔试第一场编程真题)
    题面核心思想前缀和(不过是以一整行或一整列的维度)(滑动窗口应该也可以)需要注意的是可以横着切也可以竖着切代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)(1e9+7);Scannerscanne......