全部评论 29

  • 麻将我都双精了新周边什么时候出啊

    2024-01-05 来自 浙江

    4
  • 我们要访问图中的每个节点,即图的遍历。

    图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。
    我们根据访问节点的顺序与方式(根据搜索方法),可以分为广度优先(BFS)和深度优先(DFS),这是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。

    我们分别来介绍

    一、深度优先(DFS)
    深度优先搜索(Depth-First-Search),简称 DFS。
    我们以上图为例,现在需要访问每个节点,且只访问一次,可以看到,图分成了很多之路,

    主要思路是从图中一个未访问的顶点 V (比如A)开始,沿着一条路一直走到底,深入到不能再深入为止(够深),然后从这条路尽头的节点回退到上一个节点, 如果上一个节点存在没有探索的分支,便继续探索若没有则继续回退,再从另一条路开始走到底…,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。

    这就是暴力穷举,

    1.1 图解过程

    1、我们从根节点 A 开始遍历,它相邻的节点有 B,E,先遍历节点 B,再遍历 B 的子节点 C
    2、上图中一条路已经走到底了(C是叶子节点,再无可遍历的节点),此时就从 C 回退到上一个节点 B,看下节点 B 是否还有除 C 以外的节点,发现 B有 D节点,然后遍历D,
    3、同理,上图中一条路已经走到底了(D是叶子节点,再无可遍历的节点),此时就从 D 回退到上一个节点 B,B的节点都遍历过了,然后在回到A, 同样的逻辑,再到,E、F

    1.2 java 实现
    package com.test;

    import java.util.ArrayList;
    import java.util.List;

    public class DepthFirstSearch {

    // 定义图结构
    private List<Integer>[] graph;

    // 构造函数,初始化图结构
    public DepthFirstSearch(int numVertices) {
    graph = new ArrayList[numVertices];
    for (int i = 0; i < numVertices; i++) {
    graph[i] = new ArrayList<>();
    }
    }

    // 添加边
    public void addEdge(int v1, int v2) {
    graph[v1].add(v2);
    }

    // 深度优先搜索算法实现
    public void dfs(int start) {
    boolean[] visited = new boolean[graph.length]; // 标记每个顶点是否被访问过
    dfsHelper(start, visited); // 递归实现深度优先搜索算法
    }

    // 递归实现深度优先搜索算法
    private void dfsHelper(int vertex, boolean[] visited) {
    visited[vertex] = true; // 标记当前顶点已被访问过
    System.out.print(geta(vertex)); // 输出当前顶点编号
    for (int neighbor : graph[vertex]) { // 遍历当前顶点的邻居顶点
    if (!visited[neighbor]) { // 如果邻居顶点未被访问过,则递归访问它
    dfsHelper(neighbor, visited);
    }
    }
    }

    private String geta(int index){
    switch (index) {
    case 0:
    return "A";
    case 1:
    return "B";
    case 2:
    return "C";
    case 3:
    return "D";
    case 4:
    return "E";
    case 5:
    return "F";
    }
    return "";
    }

    // 测试代码

    2024-06-22 来自 广东

    2
  • 新周边想法:一课一练精华版,或者卡包(如蛋仔or原神),水杯,大富翁游戏,AC挂件,TLE挂件,WA挂件,RE挂件等。(不喜勿喷)

    2024-02-02 来自 浙江

    2
  • 麻将麻将,帮我看看呗 -->https://www.acgo.cn/discuss/13232 (awa

    2024-01-27 来自 浙江

    1
    • 个人感觉写的不太好……算是干货型罢(悲

      2024-01-27 来自 浙江

      1
  • 诶?麻将我2精了哎,都算吗?[doge]

    2023-12-28 来自 浙江

    1
  • 可以把我的二维数组干货放上去吗?

    2023-12-03 来自 广东

    1
  • 麻将我那个第三次排位赛题解可以放上去吗【doge】

    2023-11-28 来自 浙江

    1
  • 2023-10-31 来自 浙江

    1
  • 可以帮忙加一个精华或者置顶嘛,欢乐赛#26的python题解:https://www.acgo.cn/discuss/post/22916

    2024-07-29 来自 浙江

    0
  • 还有人想用p2p从业人员的方法吗?

    2024-06-01 来自 广东

    0
  • @AC君,看看我的吧,孩子就想要个精选->https://www.acgo.cn/discuss/16741,第二次

    2024-04-17 来自 浙江

    0
  • @AC君,看看我的吧,孩子就想要个精选->https://www.acgo.cn/discuss/16741

    2024-04-16 来自 浙江

    0
  • https://www.acgo.cn/discuss/15118看一下这个

    2024-03-09 来自 广东

    0
  • #创作计划#
    所谓回文数,就是正着读和反着读一样的数,例如,12321 和 5665 都是正着读和反着读一样的数,所以是回文数;而 1234 反着读是 4321,和正着读不一样,所以不是回文数。

    输入格式
    输入一个正整数 n ( 0<n≤10
    9
    )。

    输出格式
    如果 n 是回文数,则输出 YES;否则输出 NO。

    2024-03-05 来自 上海

    0
  • 题目描述
    你作为一个村的村长,保卫村庄是理所当然的了。今天,村庄里来了一只恶龙,他有 n 个头,恶龙到嘎人放火。你着急了。

    不过天无绝人之路,现在来了一个骑士团,里面有 m 位成员,每个人都可以砍掉一个大小不超过 x
    i

    的头,需要花费个 x
    i

    金币,求最砍掉龙的所有头的最小花费。

    提示
    数据范围:

    1≤n,m≤20000

    样例说明:

    派出花费为7的骑士砍掉大小5

    2024-03-05 来自 上海

    0
  • https://www.acgo.cn/discuss/12777
    可以吗?

    2024-02-05 来自 陕西

    0
  • 我们的老师是第一名?

    2024-02-01 来自 广东

    0
  • 麻将麻将,帮我看看呗 --> https://www.acgo.cn/discuss/13235(顶风作案🤣👉

    2024-01-28 来自 浙江

    0
  • 我的acgo13题解可以放吗?

    2023-12-23 来自 浙江

    0
  • ????

    2023-12-23 来自 浙江

    0

热门讨论