- 博客(13)
- 问答 (1)
- 收藏
- 关注
原创 记一次奇妙的递归bug
这两种写法或许在正常情况下没有区别,但是当递归调用时,每次dfs都会再次调用更改res的值,在C++的底层编译器优化中似乎由于某种不明原因导致第一种写法永远无法将res成功+=其本身,只会保留最开始计算的结果。也就是说,第二次递归开始的值不会再被计算。本人琢磨了许久,最后发现改为下面这种写法之后就不会出现错误,大概是要保证每次dfs只明显改变一次res的值,而不应该写在复杂嵌套语句中。这也警示我们代码应尽量简单明了。
2023-10-30 02:09:40
139
原创 图的遍历问题中何时使用visited数组记录是否访问过某点
这是因为,visited数组记录已访问过的节点,这帮助我们优化了bfs所需队列,减少了这个队列的负担,也就是使得此队列中元素的数量减少,这不仅在时间上属于极大的优化,在空间上也是。而在BFS中,由于我们是层次遍历,所以有时即使不使用`visited`数组,也不会导致问题,尤其是在树结构中。所以,在遍历无向图时,使用`visited`数组避免无限循环是更常见的。对于一些其他类型的图的题目,例如岛屿数量,私以为不属于图的知识,属于矩阵的dfs/bfs,显然需要使用visited数组,就不再本文讨论范围内了。
2023-10-29 23:53:25
460
原创 关于快慢指针求解有环链表环起点位置算法的严谨证明
因此,当快慢指针相遇后,如果我们重新将快指针置于链表头部,并以与慢指针相同的速度(每次前进一格)移动两个指针,那么它们将在环的起点处再次相遇。这是因为,当慢指针移动距离 C 到达环的起点时,从链表头部移动的快指针也正好移动了距离 A,即 C 的长度,从而在环的起点相遇。快指针每次移动两个单位,慢指针每次移动一个单位。例如,第一次移动后,快指针位于链表第三个节点,慢指针位于链表第二个节点。这意味着从链表的头部到环的起点的距离 A,等于从快慢指针相遇的位置到环的起点的距离 C 加上环内绕的 n-1 圈。
2023-10-29 18:00:32
135
原创 图的几种题型和对应的状态定义
对于拓扑排序,我们确实需要三种状态(未访问、正在访问、已访问)来检测有向图中的循环。5. 寻找桥和割点:在无向图中寻找桥和割点时,我们需要跟踪每个节点的发现时间和最低时间,但基本上只需要两种状态(已访问和未访问)。只有在需要检测当前DFS路径中是否存在循环的情况下,我们才真正需要三种状态。4. 强连通分量(SCC):寻找有向图中的强连通分量通常需要逆后序的DFS遍历,但仍然只需要两种状态。2. 简单的图遍历(如DFS或BFS):只需要两种状态(已访问和未访问)。1. 拓扑排序:需要三种状态来检测循环。
2023-10-27 23:52:17
117
原创 mirror常见属性
用于标记一个字段,使其在服务器上的值自动同步到所有连接的客户端。当这个字段的值在服务器上改变时,所有客户端的这个字段的值也会自动更新。命令是从客户端发送到服务器的方法,常用于告诉服务器客户端的动作或意图,例如移动、攻击等。这允许服务器调用所有连接到服务器的客户端的方法。// 这个 RPC 在服务器上调用,但在所有客户端上执行,用于更新 UI 或其他客户端状态。标记一个方法,使其仅在服务器上运行。// 这个字段的值会自动在服务器和所有客户端之间同步的信息。// 这个命令在客户端上调用,但在服务器上执行。
2023-10-17 15:43:00
157
原创 C#中float?语法的使用
当某个值是可选的,不是必需的时,可空类型是一个好选择。例如,一个人的年龄可能是未知的,或者一个设备的读数可能是不可用的,在这些情况下,你可以使用可空类型来表示这些情况。当你有一个类或结构体,其中的某些字段或属性在对象刚被创建时还没有被赋值,可空类型可以帮助表示这种 "未设置" 的状态。2. 性能考虑:可空类型在某些情况下可能会带来轻微的性能开销,虽然这通常不是问题,但在性能敏感的场景中需要考虑。3. 可读性:使用可空类型可以增加代码的可读性,但也需要确保代码的其他部分能正确处理 null 值。
2023-10-07 20:36:04
418
原创 C++将一个数(整数)正逆序打印以及挨个数字提取出来的方法(不会用到字符串)
C++将一个数(整数)正逆序打印以及挨个数字提取出来的方法(不会用到字符串)
2021-11-30 21:57:25
3866
01 2D Animation Tutorial - Setting Up Flash.srt
2023-04-18
解决我错误的原因,不知道问什么会有浮点错误,以及为什么会有答案错误
2021-11-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人