您的位置:首页 > 健康 > 养生 > 程序员40岁以后出路_如何利用网络进行推广和宣传_百度seo软件_广告网址

程序员40岁以后出路_如何利用网络进行推广和宣传_百度seo软件_广告网址

2024/12/26 1:36:52 来源:https://blog.csdn.net/2401_88561446/article/details/144655057  浏览:    关键词:程序员40岁以后出路_如何利用网络进行推广和宣传_百度seo软件_广告网址
程序员40岁以后出路_如何利用网络进行推广和宣传_百度seo软件_广告网址

---
title: 代码随想录 day53 第11章 图论part04
date: 2024-12-22 23:48:48
modificationDate: 2024 十二月 22日 星期日 23:48:48
categories: 
    - carl
tags: []
sticky: []
hide: false
category_bar: true
---

  

# **第十一章:图论part04**

  

  

经过上面的练习,大家可能会感觉 广搜不过如此,都刷出自信了,本题让大家初步感受一下,广搜难不在广搜本身,而是如何应用广搜。

https://www.programmercarl.com/kamacoder/0110.%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8E%A5%E9%BE%99.html

```go
// ladderLength 实现 BFS 查找最短路径长度
func ladderLength(beginWord, endWord string, wordList []string) int {
    wordSet := make(map[string]struct{})
    for _, word := range wordList {
        wordSet[word] = struct{}{}
    }

    if _, exists := wordSet[endWord]; !exists {
        return 0
    }

    queue := []string{beginWord}
    visitMap := make(map[string]int)
    visitMap[beginWord] = 1

    for len(queue) > 0 {
        currentWord := queue[0]
        queue = queue[1:]
        path := visitMap[currentWord]

        for i := 0; i < len(currentWord); i++ {
            chars := []rune(currentWord)
            for ch := 'a'; ch <= 'z'; ch++ {
                chars[i] = ch
                newWord := string(chars)

                if newWord == endWord {
                    return path + 1
                }

                if _, exists := wordSet[newWord]; exists {
                    if _, visited := visitMap[newWord]; !visited {
                        visitMap[newWord] = path + 1
                        queue = append(queue, newWord)
                    }
                }
            }
        }
    }

    return 0
}


```

深搜有细节,同样是深搜两种写法的区别,以及什么时候需要回溯操作呢?

https://www.programmercarl.com/kamacoder/0105.%E6%9C%89%E5%90%91%E5%9B%BE%E7%9A%84%E5%AE%8C%E5%85%A8%E5%8F%AF%E8%BE%BE%E6%80%A7.html


```python
import collections

path = set()  # 纪录 BFS 所经过之节点

def bfs(root, graph):
    global path
    
    que = collections.deque([root])
    while que:
        cur = que.popleft()
        path.add(cur)
        
        for nei in graph[cur]:
            que.append(nei)
        graph[cur] = []
    return

def main():
    N, K = map(int, input().strip().split())
    graph = collections.defaultdict(list)
    for _ in range(K):
        src, dest = map(int, input().strip().split())
        graph[src].append(dest)
    
    bfs(1, graph)
    if path == {i for i in range(1, N + 1)}:
        return 1
    return -1
        

if __name__ == "__main__":
    print(main())
```
  

简单题,避免大家惯性思维,建议大家先独立做题。

https://www.programmercarl.com/kamacoder/0106.%E5%B2%9B%E5%B1%BF%E7%9A%84%E5%91%A8%E9%95%BF.html

```python


def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    # 读取 n 和 m
    n = int(data[0])
    m = int(data[1])
    
    # 初始化 grid
    grid = []
    index = 2
    for i in range(n):
        grid.append([int(data[index + j]) for j in range(m)])
        index += m
    
    sum_land = 0    # 陆地数量
    cover = 0       # 相邻数量

    for i in range(n):
        for j in range(m):
            if grid[i][j] == 1:
                sum_land += 1
                # 统计上边相邻陆地
                if i - 1 >= 0 and grid[i - 1][j] == 1:
                    cover += 1
                # 统计左边相邻陆地
                if j - 1 >= 0 and grid[i][j - 1] == 1:
                    cover += 1
                # 不统计下边和右边,避免重复计算
    
    result = sum_land * 4 - cover * 2
    print(result)

if __name__ == "__main__":
    main()

```
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com