前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝桥杯--挖地雷

蓝桥杯--挖地雷

作者头像
用户10271432
发布2023-10-16 19:55:37
1260
发布2023-10-16 19:55:37
举报
文章被收录于专栏:机器学习-大数据

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

题目:

        已知有很多的地窖,每一个地窖中又藏着很多的地雷,每个地窖之间都存在着相连性,但是不是任意的地窖都是相连的,要求我们找出一次能够找到的所有地雷数最大的情况,并且输出此情况一次经过哪些地窖。输出的情况数在第一行,第二行为地雷数目。

输入描述:

第一行:

  此行表示第一个地窖到最后一个地窖每个地窖中的地雷数目

        第二行及接下俩n+1行:

        第二行表示第一个地窖和其他地窖之间的连通性,如果连通则表示为1,如果没有连通则表示为0,例如 1 1 1 0 则表示第一个地窖和第二个地窖,第三个地窖,第四个地窖有连通性,与第五个地窖没有连通性。

样例输入:

5 10 8 4 7 6 1 1 1 0 0 0 0 1 1 1

输出描述:

        输出两行数据:

        第一行:1 3 4 5

        第二行:27

        即第一行为需要找到的地窖类型,第二行为总的地雷数目

算法描述:

        本蒻蒻使用的是DFS,毕竟节点数目不是太多,直接暴力循环找到所有可能的路径中的地雷数目。

  • 数据结构描述:

        因为是dfs,每个结点之间是否有联系,可以用二维数组来存储,并且存储的二维数组是一个上三角矩阵,这样存储可以节省时间,当然也可以在for循环中改变循环的起始节点也可以。

  • dfs最大的疼点

        下标是否正确对dfs的结果影响很大,编辑算法的过程中一定一定注意自己定义数据的下标。结果不然很乐观。

  • 最后结果

        因为组后的结果实在一个列表里面,需要单独写一个冒泡循环给结果排序。

ac代码:

代码语言:javascript
复制
import os
import sys
          
n = int(input())
a = [0] + list(map(int,input().split()))
G = [[]]
ans = []

for i in range(n-1):
    G.append([0 for i in range(i)] + [1] + list(map(int,input().split())))
##print(G)
def dfs(i:int,n:int,res:int,s:str):
    global ans
    if i == n:
        ans.append([res,s])
        return 
    for x in range(i,n):   
        if G[i][x] == 1:               
            dfs(x+1,n,res+a[x+1],s+" "+ str(x+1)) 
        else:
            ans.append([res,s])
            
for i in range(1,n+1):
    s = str(i)
    dfs(i,n,a[i],s)

print(ans)
for i in range(len(ans)):
    for j in range(i,len(ans)):
        if ans[i][0]<ans[j][0]:
            tmp = ans[i]
            ans[i] = ans[j]
            ans[j] = ans[i]

##print(ans)
print(ans[0][1])
print(ans[0][0])
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 输入描述:
  • 样例输入:
  • 输出描述:
  • 算法描述:
  • ac代码:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档