当前位置: 首页 > news >正文

蓝桥杯寒假集训第四天(全球变暖DFS)

没有白走的路,每一步都算数🎈🎈🎈

题目描述:

有一个正方形区域,里面有大陆和海洋,暂且用‘.’表示海洋,用‘#’表示大陆。我们把上下左右都连在一起的大陆称之为岛屿。但是随着气温的升高,有些沿海岛屿的大陆会被海洋给吞噬。问在大海咆哮之后,有多少的岛屿被完全淹没。

输入描述:

第一行:

输入一个数n,表示方形区域的边长

接下来n行:

输入n个符号,可以是‘.’,也可以是‘#’。‘.’表示海洋;‘#’表示大陆;

输出描述:

输出最后还存在的岛屿数目t

样例输入输出:

样例输入:

样例输出:

1

算法设计思路:

        当遇见‘#’我们就认为多了一个岛屿,当这个岛屿的上下左右都是‘#’时候,我们认为这个岛屿不会被淹没。并且将中间的大陆做一个标记。然后对上下左右四个方位的点分别进行判断,如果满足条件再进行递归。

段错误 

        第一感觉认为这个和指针越界有关,于是在if条件语句中增设门槛,但依旧段错误。遂查找文献,发现是有递归栈满的嫌疑。然后通过设置参数,结果成功

文末有参考文献

最终AC代码:

 

#全球变暖
import sys
n = int(input())
L = []
res_ans = 0# 所有的岛屿数目
ans  = 0#没有被淹没的岛屿数目
sys.setrecursionlimit(100000)
for i in range(n):
    L.append(list(input()))
flag = False
d = [[1,0],[-1,0],[0,1],[0,-1]]
def dfs(x,y):
    global flag 
    global ans 
    if flag==False:
        cnt = 0
        for i in range(4):
            newx = x+d[i][0]
            newy = y+d[i][1]
            if newx>=0 and newx<n and newy >=0 and newy <n:
                if L[newx][newy]!='.':
                    cnt+=1
        if cnt==4:
            flag = True
            ans+=1
    L[x][y] = '*'
    for i in range(4):
        xx = x+d[i][0]
        yy = y+d[i][1]
        if  xx>=0 and xx <n and yy>=0 and yy<n:
            if L[xx][yy] == '#':
                dfs(xx,yy)
            
for i in range(n):
    for j in range(n):
        if L[i][j] == '#':
            res_ans+=1
            flag = False
            dfs(i,j)
print(res_ans-ans)

python dfs bfs迷宫_AcWing 1112. 迷宫DFS-Python版本(DFS递归深度限制)_weixin_39822993的博客-CSDN博客

每日一句

摘自《《晚熟的人》》:

世界上的事儿就是这样,无论多么高的山,也有鸟飞过去;无论多么密的网,也有鱼钻过去

相关文章:

  • VScode中不同目录间python库函数的调用
  • C语言版扫雷——从0到1实现扫雷小游戏
  • 机器学习笔记 - 模式识别之图像特征提取和特征选择的基本方法总结
  • APP应用渗透测试思路
  • 微信小程序框架
  • 网络编程 udp/ip协议 c/s模型
  • 【数据结构】C语言实现链表(单链表部分)
  • JAVA练习8
  • 聊聊最适合程序员的画图工具
  • JAVA数据结构篇--12理解LinkedHashSetTreeSet
  • DR_CAN基尔霍夫电路题解法【自留用】
  • 21级数据结构考前模拟题
  • 剑指offer----C语言版----第六天
  • Qt音视频开发08-ffmpeg内核优化(极速打开/超时回调/实时响应)
  • 网络安全一哥的奇安信发布了全球高级可持续威胁年度报告 值得学习
  • CentOS 7 防火墙操作
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Docker: 容器互访的三种方式
  • ES6之路之模块详解
  • input实现文字超出省略号功能
  • JDK9: 集成 Jshell 和 Maven 项目.
  • mysql外键的使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 闭包--闭包作用之保存(一)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 巧用 TypeScript (一)
  • 实现菜单下拉伸展折叠效果demo
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 网络应用优化——时延与带宽
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信小程序填坑清单
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用jquery写贪吃蛇
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • FaaS 的简单实践
  • 阿里云重庆大学大数据训练营落地分享
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​批处理文件中的errorlevel用法
  • ​如何在iOS手机上查看应用日志
  • #DBA杂记1
  • #Spring-boot高级
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (一)80c52学习之旅-起始篇
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)母版页和相对路径
  • *Django中的Ajax 纯js的书写样式1
  • *上位机的定义
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 材料检测系统崩溃分析
  • .net 生成二级域名