当前位置: 首页 > news >正文

文心一言 VS 讯飞星火 VS chatgpt (284)-- 算法导论21.2 2题

二、对定理 21.1 的整体证明进行改造,得到使用链表表示和加权合并启发式策略下的 MAKE-SET 和 FIND-SET 的摊还时间上界为 O(1),以及 UNION 的摊还时间上界为 O(lgn)。如果要写代码,请用go语言。

文心一言:

在Go语言中实现使用链表表示的不相交集合(Disjoint Set)数据结构,并且结合加权合并(Union-by-Rank)和路径压缩(Path Compression)启发式策略,可以使MAKE-SETFIND-SET的摊还时间复杂度为O(1),而UNION的摊还时间复杂度为O(lg n)。以下是一个简化的实现示例:

package mainimport ("fmt"
)// SetNode 表示集合中的一个元素
type SetNode struct {parent *SetNode // 父节点(合并后指向新集合的代表)rank   int      // 秩(用于记录集合的大小层级)id     int      // 唯一标识符(可选,用于打印等)// ... 可以添加其他字段,比如数据值等
}// MAKE-SET 创建一个新的集合,并返回其代表节点
func MakeSet(id int) *SetNode {return &SetNode{parent: nil, rank: 0, id: id}
}// FIND-SET 查找元素所在集合的代表节点(根节点)
// 使用路径压缩优化
func FindSet(x *SetNode) *SetNode {if x.parent != nil {x.parent = FindSet(x.parent) // 路径压缩}return x.parent
}// UNION 合并两个集合
// 使用加权合并启发式策略
func Union(x, y *SetNode) {rootX, rootY := FindSet(x), FindSet(y)if rootX == rootY {return // 已经是同一个集合}if rootX.rank < rootY.rank {rootX.parent = rootY} else if rootX.rank > rootY.rank {rootY.parent = rootX} else { // 如果两个集合的秩相同,将一个合并到另一个,并增加合并后集合的秩rootY.parent = rootXrootX.rank++}
}func main() {// 示例使用x := MakeSet(1)y := MakeSet(2)z := MakeSet(3)// 初始时,每个节点都是它自己的集合代表fmt.Println("Initial sets:")fmt.Println("x:", FindSet(x)) // xfmt.Println("y:", FindSet(y)) // yfmt.Println("z:", FindSet(z)) // z// 合并集合Union(x, y)fmt.Println("After Union(x, y):")fmt.Println("x:", FindSet(x)) // 假设y的rank更高或相同,因此成为代表fmt.Println("y:", FindSet(y)) // 与x同集合fmt.Println("z:", FindSet(z)) // z// 再次合并Union(y, z)fmt.Println("After Union(y, z):")fmt.Println("x:", FindSet(x)) // 由于y和z合并,x所在的集合代表不变fmt.Println("y:", FindSet(y)) // 与z同集合,且由于路径压缩,直接指向最终代表fmt.Println("z:", FindSet(z)) // 与y同集合
}

在上面的代码中,我们定义了一个SetNode结构体来表示集合中的元素,它包含了指向父节点的指针(在合并后指向新集合的代表)、秩(用于记录集合的大小层级)和一个唯一的标识符。

MakeSet函数用于创建一个新的集合,并返回其代表节点。FindSet函数通过递归查找并返回元素所在集合的代表节点,同时进行了路径压缩优化。Union函数合并两个集合,它首先找到两个元素各自的代表节点,然后根据加权合并启发式策略决定哪个集合应该成为新集合的代表,并更新相关指针和秩。

注意,上述代码中的时间复杂度分析是基于摊还分析(Amortized Analysis)的,即考虑到多次操作后平均每次操作的时间复杂度。在加权合并和路径压缩的启发式策略下,可以证明MAKE-SETFIND-SET的摊还时间复杂度为O(1),而UNION的摊还时间复杂度为O(lg n),其中n是集合中的元素数量。

讯飞星火:

在改造后的算法中,我们使用链表来表示集合,并采用加权合并启发式策略。在这种策略下,每次进行 UNION 操作时,总是将较小的树连接到较大的树下,以保持树的平衡性。

以下是用 Go 语言实现的代码:

package main
import "fmt"
type Node struct {parent *Noderank int
}
func MakeSet(x *Node) {x.parent = xx.rank = 0
}
func FindSet(x *Node) *Node {if x != x.parent {x.parent = FindSet(x.parent)}return x.parent
}
func Union(x, y *Node) {xRoot := FindSet(x)yRoot := FindSet(y)if xRoot == yRoot {return}if xRoot.rank < yRoot.rank {xRoot, yRoot = yRoot, xRoot}yRoot.parent = xRootif xRoot.rank == yRoot.rank {xRoot.rank++}
}
func main() {var nodes [10]Nodefor i := range nodes {MakeSet(&nodes[i])}Union(&nodes[0], &nodes[1])Union(&nodes[1], &nodes[2])fmt.Println(FindSet(&nodes[0]) == FindSet(&nodes[2])) // 输出: true
}

在这个代码中,MakeSet 函数初始化一个节点作为一个新的集合,FindSet 函数查找一个节点所在集合的代表元素,Union 函数将两个集合合并为一个集合。

360智脑:

首先,我们需要理解题目中的要求。这里提到了“定理 21.1”,但没有提供具体的定理内容。不过,从题目的后续要求来看,我们可以推断这可能是指在数据结构课程或者算法课程中讨论的关于并查集(Union-Find)的数据结构及其操作的摊还时间上界的定理。

并查集是一种用来处理不相交集合(Disjoint Sets)的数据结构,主要操作包括:

  • MAKE-SET: 创建一个单独的集合,包含单一元素。
  • FIND-SET: 查找一个元素所属的集合的代表元素。
  • UNION: 将两个集合合并成一个集合。

在使用基于链接列表的并查集实现中,每个集合由一个链表表示,并且通常会有一个额外的权重字段来记录集合的大小,以便在合并集合时能够应用加权合并启发式策略。加权合并策略选择将较小集合合并到较大集合以减少树的高度,从而加速查找操作。

下面是一个Go语言实现示例:

type Node struct {parent *Noderank   intsize   int
}func NewNode() *Node {return &Node{parent: nil, rank: 0, size: 1}
}// MAKE-SET 创建一个新的集合,包含单一元素。
func MAKE-SET(x *Node) {x.parent = x
}// FIND-SET 找到元素 x 所在集合的代表元素。
func FIND-SET(x *Node) *Node {if x != x.parent {x.parent = FIND-SET(x.parent)}return x.parent
}// UNION 合并两个集合。
func UNION(x *Node, y *Node) {rootX := FIND-SET(x)rootY := FIND-SET(y)if rootX == rootY {return // 已经在同一集合中,无需合并。}// 加权合并启发式策略:总是将较小集合合并到较大集合中。if rootX.size < rootY.size {rootX, rootY = rootY, rootX // 交换以便rootX是较大的集合。}// 合并集合。rootY.parent = rootXrootX.size += rootY.size// 如果两个集合的大小相同,则合并后需要更新排名。if rootX.size == rootY.size {rootX.rank++}
}// 摊还时间上界为 O(1) 的 MAKE-SET 和 FIND-SET。
// 摊还时间上界为 O(log n) 的 UNION。

请注意,这里的代码仅展示了核心逻辑,并没有包括完整的程序。在实践中,还需要考虑错误处理和其他细节。此外,“MAKE-SET”、“FIND-SET”、“UNION”这些函数名在Go语言中需要遵守命名规范,例如应全部小写或首字母大写(如果是公共方法)。

智谱清言:

定理 21.1 通常出现在数据结构的文献中,特别是关于并查集(Disjoint Set Union,简称 DSU)的章节。在并查集中,MAKE-SET、FIND-SET 和 UNION 是三个基本操作,分别用于创建集合、查找集合的代表元素(或者根节点)以及合并两个集合。
加权合并启发式策略是一种优化 UNION 操作的方法,它使用路径压缩(Path Compression)和按秩合并(Union by Rank)技术,以确保树的高度尽可能低,从而减少 FIND-SET 操作的时间复杂度,并且使 UNION 操作的摊还时间复杂度达到 O(lg n)。
链表表示则是一种用于实现并查集的数据结构,其中每个集合由一个链表维护。链表中的节点可能包含指向其他节点(代表其他元素)的指针,以及一个指向根节点的指针。
为了改造定理 21.1 的证明,使之适用于链表表示和加权合并启发式策略,我们需要在代码中实现这些技术。以下是使用 Go 语言的一个简单示例:

package main
import ("fmt"
)
type Node struct {parent *Noderank   intweight int // 元素权重,用于加权合并
}
type DisjointSet struct {nodes []*Node
}
func MakeSet(weight int) *DisjointSet {ds := &DisjointSet{nodes: make([]*Node, weight)}for i := range ds.nodes {ds.nodes[i] = &Node{parent: ds.nodes[i], rank: 0}}return ds
}
func (ds *DisjointSet) FindSet(x int) int {if ds.nodes[x].parent != ds.nodes[x] {ds.nodes[x].parent = ds.FindSet(ds.nodes[x].parent.parent)}return ds.nodes[x].parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.

天工:

为了使用链表表示和加权合并启发式策略来实现MAKE-SET、FIND-SET和UNION操作,我们需要定义一些基本的结构和函数。以下是用Go语言编写的示例代码,它展示了如何实现这些操作,并保持摊还时间上界为O(1)(对于MAKE-SET和FIND-SET)和O(logn)(对于UNION)。

首先,我们需要定义一个节点结构和一个链表结构:

type Node struct {value    intparent   *Nodechildren []*Noderank     int
}type LinkedList struct {head *Node
}

接下来,我们实现MAKE-SET操作:

func MakeSet(value int) *Node {return &Node{value: value,parent: nil,children: []*Node{},rank: 0,}
}

然后,我们实现FIND-SET操作:

func FindSet(node *Node) *Node {if node.parent == nil {return node} else {return FindSet(node.parent)}
}

接着,我们实现UNION操作:

func Union(node1 *Node, node2 *Node) {root1 := FindSet(node1)root2 := FindSet(node2)if root1 != root2 {if root1.rank < root2.rank {root1.parent = root2root2.children = append(root2.children, root1)} else {root2.parent = root1root1.children = append(root1.children, root2)if root1.rank == root2.rank {root1.rank++}}}
}

在这个实现中,MAKE-SET创建了一个新的节点,其父节点为空,秩为0。FIND-SET通过递归找到节点的根节点,这是路径压缩的一种简化形式。UNION比较两个节点的根节点的秩,将秩较小的根节点作为秩较大的根节点的子节点,并在秩相等时增加较大秩的值。

请注意,这个实现没有完全实现路径压缩,这可能会影响FIND-SET操作的性能。在实际应用中,通常会使用更复杂的路径压缩技术来进一步优化FIND-SET操作的性能。此外,这个实现也没有使用链表的头指针来加速FIND-SET操作,这在某些情况下可以通过引入额外的指针或修改数据结构来实现。

最后,需要注意的是,这个实现是为了说明目的而简化的,实际应用中的并查集(Disjoint Set Union, DSU)实现可能会有所不同,以适应特定的性能要求和内存限制。

灵小智:

对于使用链表表示和加权合并启发式策略的并查集,我们可以通过修改定理 21.1 的整体证明来得到 MAKE-SET 和 FIND-SET 的摊还时间上界为 O(1),以及 UNION 的摊还时间上界为 O(lgn)。

在这种情况下,我们可以使用go语言来实现这些操作。以下是一个简单的示例代码:

package mainimport "fmt"type Node struct {parent *Noderank   int
}func MakeSet() *Node {n := &Node{}n.parent = nn.rank = 0return n
}func FindSet(n *Node) *Node {if n != n.parent {n.parent = FindSet(n.parent)}return n.parent
}func Union(x, y *Node) {rootX := FindSet(x)rootY := FindSet(y)if rootX == rootY {return}if rootX.rank < rootY.rank {rootX.parent = rootY} else if rootX.rank > rootY.rank {rootY.parent = rootX} else {rootY.parent = rootXrootX.rank++}
}func main() {// 创建三个集合x := MakeSet()y := MakeSet()z := MakeSet()// 将x和y合并Union(x, y)// 将y和z合并Union(y, z)// 查找x的根节点root := FindSet(x)fmt.Println(root)
}

这段代码展示了如何使用go语言实现 MAKE-SET、FIND-SET 和 UNION 操作,其中使用了链表表示和加权合并启发式策略,从而实现了摊还时间上界为 O(1) 和 O(lgn)。希望这能帮助到你。

chatgpt:

以下是使用链表表示和加权合并启发式策略的 MAKE-SET、FIND-SET 和 UNION 的代码示例,以达到摊还时间上界为 O(1) 和 O(log n)。请注意,这只是一个概念性的示例,具体实现可能需要根据实际情况进行调整和优化。

package mainimport "fmt"type Node struct {parent *Noderank   intvalue  interface{}
}func MakeSet(x interface{}) *Node {return &Node{parent: nil,rank:   0,value:  x,}
}func FindSet(x *Node) *Node {if x.parent != x {x.parent = FindSet(x.parent)}return x.parent
}func Union(x, y *Node) {rootX := FindSet(x)rootY := FindSet(y)if rootX == rootY {return // Already in the same set}if rootX.rank < rootY.rank {rootX.parent = rootY} else if rootX.rank > rootY.rank {rootY.parent = rootX} else { // Equal ranks, merge and increment rank by 1rootY.parent = rootXrootX.rank++}
}func main() {nodeA := MakeSet("A")nodeB := MakeSet("B")nodeC := MakeSet("C")fmt.Println(FindSet(nodeA).value) // Afmt.Println(FindSet(nodeB).value) // Bfmt.Println(FindSet(nodeC).value) // CUnion(nodeA, nodeB)fmt.Println(FindSet(nodeA).value) // A (after union)fmt.Println(FindSet(nodeB).value) // A (after union)Union(nodeA, nodeC)fmt.Println(FindSet(nodeA).value) // A (after second union)fmt.Println(FindSet(nodeC).value) // A (after second union)
}

在这个示例中,我们使用链表结构表示每个集合的树形结构,并通过引入 rank 属性来进行加权合并。摊还时间复杂度为 O(1) 的 MAKE-SET 操作实际上只是创建了一个新节点,没有其他开销。摊还时间复杂度为 O(1) 的 FIND-SET 操作通过路径压缩来保证了后续查找的效率。而 UNION 操作则根据两个集合的 rank 值来决定如何进行合并,保证了摊还时间复杂度为 O(log n)。

kimi:

定理21.1通常指的是并查集操作的摊还时间上界。在使用链表表示和加权合并启发式策略下,我们可以改造证明以满足以下摊还时间上界:

  • MAKE-SET:摊还时间上界为 O(1)
  • FIND-SET:摊还时间上界为 O(1)
  • UNION:摊还时间上界为 O(log n)

以下是改造后的证明概述:

  1. MAKE-SET:创建单个元素的集合时,只需要分配内存给一个新的节点并设置其父节点为自身,这个过程是常数时间的,因此摊还时间上界为 O(1)。

  2. FIND-SET:在加权合并启发式下,我们通过路径压缩技术将查找操作的路径上的所有节点的父节点直接指向根节点。由于每个节点只被访问一次,且每个节点的父节点更新操作是常数时间的,因此整个操作的摊还时间上界为 O(1)。

  3. UNION:在加权合并启发式下,我们比较两个根节点的排名(或权重),并合并排名较小的树到排名较大的树。由于树的高度在最坏情况下是对数级别的,合并操作的摊还时间上界为 O(log n)。

以下是使用Go语言实现的上述操作,并附带简单的摊还分析注释:

package mainimport ("fmt"
)type SetNode struct {Value intParent *SetNodeRank int
}// MakeSet 创建一个新的单元素集合
func MakeSet(value int) *SetNode {return &SetNode{Value: value,Parent: nil, // 新节点的父节点初始化为nilRank: 0,}
}// FindSet 查找节点的根节点(路径压缩)
func FindSet(node *SetNode) *SetNode {if node == nil || node == node.Parent {return node}// 路径压缩:直接链接到根节点node.Parent = FindSet(node.Parent)return node.Parent
}// Union 合并两个集合
func Union(node1, node2 *SetNode) {root1 := FindSet(node1)root2 := FindSet(node2)if root1 != root2 {if root1.Rank < root2.Rank {root1.Parent = root2} else if root1.Rank > root2.Rank {root2.Parent = root1} else {root2.Parent = root1root1.Rank++ // 当两个节点的排名相同,增加根节点的排名}}
}func main() {// 示例:创建并合并集合set1 := MakeSet(1)set2 := MakeSet(2)set3 := MakeSet(3)Union(set1, set2)Union(set2, set3)// 输出根节点,检查合并结果root := FindSet(set1)fmt.Printf("The root of the set containing 1 is: %d\n", root.Value)
}

在上述代码中,SetNode结构体表示并查集中的节点,包含元素的值、父节点指针和排名。MakeSet函数用于创建新节点,FindSet函数实现路径压缩优化,Union函数实现加权合并启发式策略。

请注意,这个示例仅用于演示如何使用链表表示和加权合并启发式策略来实现并查集,并提供了摊还时间上界的证明概述。实际应用中,你可能需要根据具体需求调整数据结构和操作。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

混元:

首先,我们需要理解定理 21.1 的证明以及链表表示和加权合并启发式策略

我们将实现以下三个函数:

1.makeSet(x):创建一个新的集合,其中包含一个元素 x。

2.findSet(x):找到包含元素 x 的集合的代表元素(根节点)。

3.union(x, y):将包含元素 x 和 y 的两个集合合并为一个集合。

package mainimport ("container/list""fmt"
)type Element struct {Value intParent *ElementRank   int
}func makeSet(x int) *Element {return &Element{Value: x, Parent: nil, Rank: 0}
}func findSet(x *Element) *Element {if x.Parent == nil {return x}// 路径压缩x.Parent = findSet(x.Parent)return x.Parent
}func union(x, y *Element) {rootX := findSet(x)rootY := findSet(y)// 如果两个元素已经在同一个集合中,不需要合并if rootX == rootY {return}// 加权合并启发式策略if rootX.Rank > rootY.Rank {rootY.Parent = rootX} else if rootX.Rank< rootY.Rank {rootX.Parent = rootY} else {rootY.Parent = rootXrootX.Rank++}
}func main() {elements := []*Element{makeSet(1),makeSet(2),makeSet(3),makeSet(4),}union(elements[0], elements[1])union(elements[1], elements[2])union(elements[2], elements[3])fmt.Println("findSet(elements[0]):", findSet(elements[0]).Value) // 输出 1fmt.Println("findSet(elements[1]):", findSet(elements[1]).Value) // 输出 1fmt.Println("findSet(elements[2]):", findSet(elements[2]).Value) // 输出 1fmt.Println("findSet(elements[3]):", findSet(elements[3]).Value) // 输出 1
}

在这个实现中,我们使用了链表表示(通过结构体 Element 的 Parent 指针)和加权合并启发式策略(通过比较根节点的 Rank 值)。通过路径压缩和加权合并启发式策略,我们可以确保 FIND-SET 和 UNION 操作的摊还时间复杂度分别为 O(1) 和 O(lgn)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

文心一言 VS 讯飞星火 VS chatgpt (284)-- 算法导论21.2 2题

二、对定理 21.1 的整体证明进行改造&#xff0c;得到使用链表表示和加权合并启发式策略下的 MAKE-SET 和 FIND-SET 的摊还时间上界为 O(1)&#xff0c;以及 UNION 的摊还时间上界为 O(lgn)。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在Go语言中实现使用链…...

计算机组成原理网课笔记2

存储系统基本概念...

C++ | Leetcode C++题解之第143题重排链表

题目&#xff1a; 题解&#xff1a; class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…...

手写一个JSON可视化工具

前言 JSON 平时大家都会用到&#xff0c;都不陌生&#xff0c;今天就一起来实现一个 JSON 的可视化工具。 大概长成下面的样子&#xff1a; 树展示 相比于现有的一些 JSON 格式化工具&#xff0c;我们今天制作的这个小工具会把 JSON 转为树去表示。其中&#xff1a; 橙色标…...

洁盟超声波清洗机怎么样?2024爆款机型声波清洗机测评、一篇看懂

随着现在近视率的逐年上升&#xff0c;戴眼镜的人群越来越多&#xff01;当然他们也在面临着一个眼镜清洗的问题&#xff01;因为长期佩戴眼镜&#xff0c;镜框还有镜片上面都是会积累灰尘、油污、污垢以及细菌&#xff0c;脏脏的不仅令眼镜不美观&#xff0c;同时在长期的佩戴…...

react 自定义鼠标右键点击事件

功能&#xff1a;鼠标右键点击节点时&#xff0c;出现“复制”功能&#xff0c;点击其他部位&#xff0c;隐藏“复制”&#xff1b;鼠标右键事件的文案&#xff0c;始终在鼠标点击位置的右下方&#xff1b;点击复制&#xff0c;提示复制成功 效果图&#xff1a; 代码&#xff1…...

make V=1 分析

文章目录 make V1 make V1 # 顶层 Makefile 580 -include include/config/auto.conf 584 -include include/config/auto.conf.cmd ...... 593 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 594 $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig 595…...

每天一个数据分析题(三百五十八)-图表决策树

图中是某公司记录销售情况相关的表建立好的多维分析模型&#xff0c;请根据模型回答以下问题&#xff1a; 1&#xff09;该模型属于哪种连接模式&#xff1f; A. 星型模式雪花模式 B. 星座模式雪花模式 C. 星座模式星型模式雪花模式 D. 以上都不对 数据分析认证考试介绍…...

HarmonyOS 页面路由(Router)

1. HarmonyOS页面路由(Router) 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块&#xff0c;通过不同的url地址&#xff0c;可以方便地进行页面路由&#xff0c;轻松地访问不同的页面。本文将从页面跳转、页面返回和页面返回前增加一个询问…...

Python 正则表达式语法

Python 中的正则表达式是通过 re 模块提供的&#xff0c;它支持大多数正则表达式的语法。以下是一些基本的正则表达式语法元素&#xff1a; 字符匹配: . 匹配任意单个字符&#xff0c;除了换行符。\d 匹配任意数字&#xff0c;等同于 [0-9]。\D 匹配任意非数字字符&#xff0c;…...

计算机专业毕设-校园二手交易平台

1 项目介绍 基于SpringBoot的校园二手交易平台&#xff1a;前端Freemarker&#xff0c;后端 SpringBoot、Jpa&#xff0c;系统用户分为两类&#xff0c;管理员、学生&#xff0c;具体功能如下&#xff1a; 管理员&#xff1a; 基本功能&#xff1a;登录、修改个人信息、修改…...

微信小程序添加服务类目|《非经营性互联网信息服务备案核准》怎么获取

根据客服反馈&#xff0c;《非经营性互联网信息服务备案核准》在工业和信息化部政务服务平台网站查询&#xff0c;查询结果的截图就是《非经营性互联网信息服务备案核准》。 工业和信息化部政务服务平台 《非经营性互联网信息服务备案核准》&#xff1a; 与客服聊天的截图&a…...

Internet Download Manager ( 极速下载器 ) 序列号注册码 IDM下载器注册机中文激活破解版

IDM下载器(Internet Download Manager)是一款专业的下载管理软件&#xff0c;它通过多线程技术和智能文件分段技术&#xff0c;有效提升下载速度&#xff0c;并支持断点续传&#xff0c;还具有计划下载功能&#xff0c;用户可以设置特定的下载时间&#xff0c;非常适合需要在特…...

FPGA - 滤波器 - IIR滤波器设计

一&#xff0c;IIR滤波器 在FPGA - 滤波器 - FIR滤波器设计中可知&#xff0c;数字滤波器是一个时域离散系统。任何一个时域离散系统都可以用一个N阶差分方程来表示&#xff0c;即&#xff1a; 式中&#xff0c;x(n)和y(n)分别是系统的输入序列和输出序列&#xff1b;aj和bi均为…...

练习时长 1 年 2 个月的 Java 菜鸡练习生最近面经,期望25K

面经哥只做互联网社招面试经历分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥 自我介绍&#xff1a;本人是练习时长 1 年 2 个月的 Java 后端菜鸡练习生。下面是我最近面试的面经&#xff1a; 百度 一面 约1h时间&#xff1a;2…...

计算机跨考现状,两极分化现象很严重

其实我觉得跨考计算机对于一些本科学过高数的同学来说有天然的优势 只要高数能学会&#xff0c;那计算机那几本专业课&#xff0c;也能很轻松的拿下&#xff0c;而对于本科是文科类的专业&#xff0c;如果想跨考计算机&#xff0c;难度就不是一般的大了。 现在跨考计算机呈现…...

leetcode73 矩阵置零

题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 解析 这道题题目上要求用原地算法…...

了解 XML HttpRequest 及其在 Web 开发中的应用

XML HttpRequest&#xff08;XHR&#xff09; 技术是构建动态、响应式网站的关键。这项技术使得网页能在不重新加载整个页面的情况下与服务器进行数据交互&#xff0c;极大地优化了用户的交互体验。 定义 XML HttpRequest XML HttpRequest 是一种浏览器与服务器进行数据交换的…...

CPU与GPU的原理不同

CPU&#xff08;中央处理器&#xff09;和GPU&#xff08;图形处理器&#xff09;在设计原理上有很大的不同。CPU是通用的计算核心&#xff0c;擅长处理复杂的控制流和数据结构&#xff0c;而GPU则是为了并行处理大量相似的计算任务而设计的。二者是计算机系统中两种不同类型的…...

嵌入式相关基础

一.常见的芯片类型 1.微控制器(MCU) (1)STM32 主频(MHz)内核Flash(Kbytes)Ram(Kbytes)封装ADC channels DAC channels SPISTM32F407ZG168ARM Cortex-M4f1024192LQFP1442423STM32F407ZE168ARM Cortex-M4f512192LQFP1442423STM32F407VE168ARM Cortex-M4f512192LQFP1001623STM32…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】

1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...

Ansible+Zabbix-agent2快速实现对多主机监控

ansible Ansible 是一款开源的自动化工具&#xff0c;用于配置管理&#xff08;Configuration Management&#xff09;、应用部署&#xff08;Application Deployment&#xff09;、任务自动化&#xff08;Task Automation&#xff09;和编排&#xff08;Orchestration&#xf…...