Day53-图论

110. 字符串接龙

110. 字符串迁移

无权图,没必要用dj等算法,仅仅使用深搜或者广搜;当然,广搜最合适,因为第一次出现目标点,就是最短路径的长度!

难点如何构造图?------仅仅一个字符不相同即可!

python 复制代码
def edge(s,t):
    count = 0
    for i in range(len(s)):
        if s[i] != t[i]:
            count +=1
    return count == 1

def main():
    n = int(input())
    beginStr,endStr = input().split()
    graph = []
    if beginStr == endStr:
        print(0)
        return
    for i in range(n):
        graph.append(input())
    queue = [[beginStr,1]]
    visited = [0] * n
    while queue:
        cur,hight = queue.pop(0)
        if edge(cur,endStr):
            print(1+hight)
            return
        for i in range(n):
            if edge(cur,graph[i]) and not visited[i]:
                queue.append([graph[i],hight+1])
                visited[i] = 1
    print(0)


if __name__ == '__main__':
    main()

105. 有向图的完全可达性

105. 有向图的完全联通

这个题用深搜和广搜都可以,但是根据题意很容易想到,用邻接表存储图肯定是最方便的。

python 复制代码
def dfs(graph,x,visited):
    if visited[x]:
        return
    visited[x] = 1
    for y in graph[x]:
        dfs(graph,y,visited)

def main():
    n,m = map(int,input().split())
    graph = [[] for _ in range(n+1)]
    for _ in range(m):
        s,t = map(int,input().split())
        graph[s].append(t)
    visited = [0] * (n+1)
    dfs(graph,1,visited)
    print(1 if sum(visited)==n else -1)

if __name__ == '__main__':
    main()

106. 岛屿的周长

106. 海岸线计算

不要被图论迷惑,不需要任何搜索技巧,仅仅是遍历,只要是岛屿边界【水或者是陆地】,+1即可

python 复制代码
DIR = [[1,0],[0,1],[-1,0],[0,-1]]

def main():
    n,m = map(int,input().split())
    graph = [[0] * (m + 2) for _ in range(n + 2)]
    for i in range(n):
        row = list(map(int,input().split()))
        for j in range(m):
            graph[i+1][j+1] = row[j]
    res = 0
    for i in range(1,n+1):
        for j in range(1,m+1):
            if graph[i][j] == 1:
                for d in DIR:
                    nexti = i+d[0]
                    nextj = j+d[1]
                    if not graph[nexti][nextj]:
                        res +=1
    print(res)
                
if __name__ == '__main__':
    main()
相关推荐
Logic1011 分钟前
C语言/数据结构位运算题解:异或XOR找出弹子游戏机中数量为奇数的数字——只出现奇数次
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
147API5 分钟前
如何设计“回答、追问、停答”三类蒸馏训练集
人工智能·算法·机器学习
小猴子爱上树6 分钟前
跨马翻译:批量图片翻译+视频字幕+智能抠图一站式工具
python·音视频
朝朝辞暮i20 分钟前
C++ 第7课 while 循环
开发语言·c++·算法
小朱爱编程12322 分钟前
我用 Jev 做了三个实用工具:整理标签页、分诊飞书反馈、找回 GitHub 收藏
java·开发语言·人工智能·后端·python·架构·ai编程
TomEval1 小时前
【测AI】第06篇:数据清洗实战 —— Pandas 处理爬取的 JD 数据
人工智能·python·自动化·aigc·pandas
blxr_1 小时前
力扣hot100爬楼梯https://leetcode.cn/problems/climbing-stairs/
算法·leetcode·职场和发展
全栈练习生1 小时前
大模型反向传播与梯度下降
python·ai
pride.li1 小时前
ISP标定-NR标定(Noise Reduction,降噪校准)
算法·计算机视觉·isp
CQU_JIAKE1 小时前
9.29【A】
算法·深度优先