网易首页 > 网易号 > 正文 申请入驻

文心一言 VS 讯飞星火 VS chatgpt (324)-- 算法导论22.4 5题

0
分享至

五、在有向无环图$G=(V,E)$上执行拓扑排序还有一种办法,就是重复寻找入度为 0 的结点,输出该结点,将该结点及从其发出的边从图中删除。请解释如何在$O(V+E)$的时间内实现这种思想。如果图$G$包含环路,将会发生什么情况?如果要写代码,请用go语言。

文心一言:

实现拓扑排序的 $O(V+E)$ 时间复杂度方法

在 $O(V+E)$ 时间内实现拓扑排序,我们可以使用两个主要的数据结构:一个队列来存储入度为 0 的节点,以及一个数组(或哈希表)来记录每个节点的入度。以下是使用 Go 语言实现的步骤和代码示例。

步骤

  1. 1.初始化:创建一个队列用于存放入度为 0 的节点,一个数组记录每个节点的入度,一个数组记录节点是否已被访问(可选,用于检测图中是否存在环)。
  2. inDegree
  3. visited
  4. 2.计算入度:遍历所有边,对于每条边,将的入度加一。
  5. (u, v)
  6. v
  7. 3.入队:将所有入度为 0 的节点加入队列。
  8. 4.拓扑排序:当队列非空时,执行以下操作:
    • •从队列中取出一个节点。
  • node
    • •输出该节点(或将其添加到结果列表中)。
    • •遍历该节点的所有邻接节点,将它们的入度减一。
    • •如果某个邻接节点的入度变为 0,则将其加入队列。
  1. 5.检查环:如果最终输出的节点数少于图中的节点总数,则图中存在环。

Go 代码实现

packagemain
import(
"container/list"
"fmt"
)
functopologicalSort(graphmap[int][]int)([]int,bool){
n:=len(graph)
inDegree:=make([]int,n)
queue:=list.New()
visited:=make([]bool,n)
result:=make([]int,0,n)
//计算每个节点的入度
foru:=rangegraph{
for_,v:=rangegraph[u]{
inDegree[v]++
}
}
//将所有入度为0的节点加入队列
fori,deg:=rangeinDegree{
ifdeg==0{
queue.PushBack(i)
}
}
//拓扑排序
forqueue.Len()>0{
front:=queue.Remove(queue.Front()).(int)
result=append(result,front)
visited[front]=true
for_,v:=rangegraph[front]{
inDegree[v]--
ifinDegree[v]==0&&!visited[v]{
queue.PushBack(v)
}
}
}
//检查是否所有节点都被访问过
iflen(result)!=n{
returnnil,false//存在环
}
returnresult,true
}
funcmain(){
graph:=map[int][]int{
0:[]int{1,2},
1:[]int{3},
2:[]int{3},
3:[]int{},
}
order,ok:=topologicalSort(graph)
ifok{
fmt.Println("TopologicalOrder:",order)
}else{
fmt.Println("Graphhasacycle.")
}
}

如果图 $G$ 包含环路

如果图 $G$ 包含环路,则至少有一个节点的入度永远不会变为 0(因为它依赖于环中的其他节点),这意味着队列最终会为空,但结果列表中的节点数将少于图中的节点总数。因此,在上面的代码中,如果,则表明图中存在环。

len(result) != n

讯飞星火:

拓扑排序的基本思想是,每次从图中选择一个入度为0的节点,然后删除该节点及其相关的边。重复这个过程直到所有节点都被选择。如果图中存在环,那么无法进行拓扑排序,因为环意味着有些节点永远不可能成为入度为0的节点。

以下是使用Go语言实现拓扑排序的方法:

packagemain
import(
"fmt"
)
typeGraphstruct{
verticesint
adjList[][]int
}
funcNewGraph(vint)*Graph{
return&Graph{
vertices:v,
adjList:make([][]int,v),
}
}
func(g*Graph)AddEdge(u,vint){
g.adjList[u]=append(g.adjList[u],v)
}
func(g*Graph)TopologicalSort()([]int,error){
inDegree:=make([]int,g.vertices)
fori:=0;ifor_,j:=rangeg.adjList[i]{
inDegree[j]++
}
}
varqueue[]int
fori,d:=rangeinDegree{
ifd==0{
queue=append(queue,i)
}
}
varresult[]int
forlen(queue)>0{
u:=queue[0]
queue=queue[1:]
result=append(result,u)
for_,v:=rangeg.adjList[u]{
inDegree[v]--
ifinDegree[v]==0{
queue=append(queue,v)
}
}
}
iflen(result)!=g.vertices{
returnnil,fmt.Errorf("图包含环")
}
returnresult,nil
}
funcmain(){
g:=NewGraph(6)
g.AddEdge(5,2)
g.AddEdge(5,0)
g.AddEdge(4,0)
g.AddEdge(4,1)
g.AddEdge(2,3)
g.AddEdge(3,1)
result,err:=g.TopologicalSort()
iferr!=nil{
fmt.Println(err)
}else{
fmt.Println("拓扑排序结果:",result)
}
}

这段代码首先计算每个节点的入度,然后将入度为0的节点加入队列。接着,它不断地从队列中取出一个节点,将其添加到结果列表中,并减少其相邻节点的入度。如果某个节点的入度变为0,则将其加入队列。最后,如果结果列表中的节点数量不等于图中的节点数量,说明图中存在环,返回错误。否则,返回拓扑排序的结果。

360智脑:

算法解释

拓扑排序是一种对有向无环图(DAG)的顶点进行线性排序的方法,使得对于每条边$(u, v)$,顶点$u$都在顶点$v$之前。以下是在$O(V+E)$时间内实现拓扑排序的步骤:

  1. 1.初始化:计算每个顶点的入度,并将所有入度为0的顶点放入一个队列中。
  2. 2.处理队列
    • •从队列中取出一个顶点$u$。
    • •输出顶点$u$。
    • •对于从$u$出发的每条边$(u, v)$,将$v$的入度减1。如果$v$的入度变为0,将其加入队列。
  3. 3.重复步骤2,直到队列为空。

时间复杂度分析

  • 初始化:需要遍历所有的边来计算每个顶点的入度,时间复杂度为$O(E)$。
  • 处理队列:每次从队列中取出一个顶点并处理其出边,最坏情况下需要处理所有的顶点和边,因此时间复杂度为$O(V+E)$。

总的时间复杂度为$O(V+E)$。

环路检测

如果在有向图中存在环路,那么在执行上述拓扑排序的过程中,会出现某个顶点的入度永远不会变为0的情况,因为环中的顶点互相指向对方。在这种情况下,队列最终会变空,但仍然存在入度不为0的顶点,这时可以判定图中存在环路。

Go语言代码示例

packagemain
import"fmt"
typeGraphstruct{
verticesint
edges[][]int
inDegree[]int
}
funcNewGraph(verticesint)*Graph{
return&Graph{
vertices:vertices,
edges:make([][]int,vertices),
inDegree:make([]int,vertices),
}
}
func(g*Graph)AddEdge(u,vint){
g.edges[u]=append(g.edges[u],v)
g.inDegree[v]++
}
func(g*Graph)TopologicalSort()([]int,bool){
queue:=[]int{}
fori:=0;iifg.inDegree[i]==0{
queue=append(queue,i)
}
}
result:=[]int{}
forlen(queue)>0{
u:=queue[0]
queue=queue[1:]
result=append(result,u)
for_,v:=rangeg.edges[u]{
g.inDegree[v]--
ifg.inDegree[v]==0{
queue=append(queue,v)
}
}
}
//Checkforcycle
for_,degree:=rangeg.inDegree{
ifdegree!=0{
returnnil,false
}
}
returnresult,true
}
funcmain(){
g:=NewGraph(6)
g.AddEdge(5,2)
g.AddEdge(5,0)
g.AddEdge(4,0)
g.AddEdge(4,1)
g.AddEdge(2,3)
g.AddEdge(3,1)
sortedVertices,ok:=g.TopologicalSort()
ifok{
fmt.Println("TopologicalSort:",sortedVertices)
}else{
fmt.Println("Thegraphcontainsacycle.")
}
}

在这个Go语言代码示例中,我们首先定义了一个结构体来表示图,包括顶点数、邻接表和每个顶点的入度。然后实现了添加边的函数和拓扑排序的函数。在函数中,我们使用了一个队列来存储入度为0的顶点,并在每次处理完一个顶点后更新其邻居的入度。最后,我们在主函数中创建了一个图,并调用了函数来进行拓扑排序。如果图中存在环路,则返回。

Graph

AddEdge

TopologicalSort

TopologicalSort

TopologicalSort

false

智谱清言:

在O(V+E)的时间内实现这种拓扑排序的方法,可以采用以下步骤:

  1. 1.初始化一个队列(或者使用列表),将所有入度为0的顶点加入队列。
  2. 2.当队列不为空时,从队列中取出一个顶点,输出该顶点,然后遍历所有从该顶点出发的边,将每条边的终点顶点的入度减1。如果某个终点顶点的入度减为0,则将其加入队列。
  3. 3.重复步骤2,直到队列为空。 下面是具体的步骤和对应的时间复杂度分析:
  • 初始化队列:需要遍历所有顶点,检查每个顶点的入度,时间复杂度为O(V)。
  • 处理队列中的每个顶点:每个顶点至多只会被加入队列一次,并且每次都会从队列中移除,所以对于每个顶点,我们都会遍历其所有出边,时间复杂度为O(E),因为每条边都会被处理一次。 因此,总的时间复杂度为O(V+E)。 如果图G包含环路,那么不可能所有顶点的入度都能减到0,因为环路上的每个顶点都会有一个入边和一个出边,所以至少会有一个顶点的入度始终不为0,这样队列最终会变为空,而图中仍然有未被处理的顶点,拓扑排序无法完成。 以下是使用Go语言实现上述拓扑排序算法的代码:
  • packagemain
    import(
    "fmt"
    //Graphrepresentsadirectedgraphusingadjacencylist
    typeGraphstruct{
    Verticesint
    AdjListmap[int][]int
    InDegreemap[int]int
    //AddEdgeaddsanedgetothegraph
    func(g*Graph)AddEdge(src,destint){
    g.AdjList[src]=append(g.AdjList[src],dest)
    g.InDegree[dest]++
    //TopologicalSortperformstopologicalsortonthegraph
    func(g*Graph)TopologicalSort()([]int,error){
    varsorted[]int
    varqueue[]int
    //Initializethequeuewithallverticeswithin-degree0
    forvertex,degree:=rangeg.InDegree{
    ifdegree==0{
    queue=append(queue,vertex)

    //Processthequeue
    forlen(queue)>0{
    vertex:=queue[0]
    queue=queue[1:]//Dequeue
    sorted=append(sorted,vertex)
    //Decreasein-degreeby1foralladjacentvertices
    for_,adjacent:=rangeg.AdjList[vertex]{
    g.InDegree[adjacent]--
    ifg.InDegree[adjacent]==0{
    queue=append(queue,adjacent)

    //Checkiftopologicalsortispossible(i.e.,graphhasnocycle)
    iflen(sorted)!=g.Vertices{
    returnnil,fmt.Errorf("graphhasatleastonecycle")
    returnsorted,nil
    funcmain(){
    g:=Graph{
    Vertices:6,
    AdjList:make(map[int][]int),
    InDegree:make(map[int]int),
    //Initializein-degreeofallverticesto0
    fori:=0;ig.InDegree[i]=0
    //Addedgestothegraph
    g.AddEdge(5,2)
    g.AddEdge(5,0)
    g.AddEdge(4,0)
    g.AddEdge(4,1)
    g.AddEdge(2,3)
    g.AddEdge(3,1)
    //Performtopologicalsort
    sorted,err:=g.TopologicalSort()
    iferr!=nil{
    fmt.Println(err)
    }else{
    fmt.Println("TopologicalSort:",sorted)

请注意,上面的代码假定顶点是从0到Vertices-1编号的。如果图中有环路,函数会返回一个错误。

TopologicalSort

天工:

如何在 O(V+E) 时间内实现拓扑排序

在有向无环图(DAG)上执行拓扑排序时,可以采用以下算法:

  1. 1.初始化:遍历所有顶点,统计每个顶点的入度(即指向该顶点的边的数量)。这可以通过遍历所有的边来完成,时间复杂度为 O(E)。
  2. 2.队列操作:创建一个队列,将所有入度为 0 的顶点加入队列中。这一步可以在初始化入度的同时完成。
  3. 3.迭代:从队列中取出一个顶点,输出它,并从图中移除该顶点和以它为起点的所有边。然后检查所有与该顶点相连的顶点(即该顶点指向的顶点),更新它们的入度(减少1),如果某个顶点的入度变为 0,则将它加入队列中。重复这个过程,直到队列为空。
    • •这个过程的复杂度为 O(V+E),因为每个顶点和边最多只被处理一次。
  4. 4.检查排序结果:如果排序过程中所有顶点都被输出,则排序成功;如果队列提前变空,但仍有顶点未被输出,说明图中存在环,拓扑排序无法完成。

如果图 G 包含环路,将会发生什么情况

如果图 G 包含环路,则拓扑排序将无法完成。在算法的迭代过程中,当所有入度为 0 的顶点都被处理后,如果图中还存在未被处理的顶点,那么这些顶点必定属于环中的一部分,它们的入度永远不会变为 0,因此无法被加入队列,导致算法提前终止,且不是所有顶点都被输出。

使用 Go 语言实现

下面是一个使用 Go 语言实现拓扑排序的示例代码。假设图使用邻接表表示,其中是一个 map,键是顶点,值是一个 slice,表示从该顶点出发的边所指向的顶点。

graph

packagemain
import(
"fmt"
)
typeGraphmap[int][]int
funcTopologicalSort(graphGraph)[]int{
indegree:=make(map[int]int)
fornode,_:=rangegraph{
indegree[node]=0//初始化入度
}
for_,nodes:=rangegraph{
for_,node:=rangenodes{
indegree[node]++//统计入度
}
}
queue:=[]int{}
fornode,d:=rangeindegree{
ifd==0{
queue=append(queue,node)//入度为0的节点加入队列
}
}
result:=[]int{}
forlen(queue)>0{
node:=queue[0]
queue=queue[1:]
result=append(result,node)
for_,neighbor:=rangegraph[node]{
indegree[neighbor]--
ifindegree[neighbor]==0{
queue=append(queue,neighbor)
}
}
}
iflen(result)!=len(graph){
//图中存在环,无法完成拓扑排序
returnnil
}
returnresult
}
funcmain(){
graph:=Graph{
0:[]int{1,2},
1:[]int{3},
2:[]int{3},
3:[]int{},
}
result:=TopologicalSort(graph)
fmt.Println(result)
}

这段代码首先计算每个节点的入度,然后将所有入度为 0 的节点加入队列。在主循环中,它从队列中取出顶点,更新入度,并将入度变为 0 的顶点加入队列。最后,如果所有顶点都被处理,则返回排序结果;否则,返回,表示图中存在环路。

nil

chatgpt:

在有向无环图上执行拓扑排序的思想是通过不断寻找入度为0的节点,将其输出并从图中删除。这种方法可以在O(V+E)的时间复杂度内实现。

具体实现步骤如下:

  1. 1.创建一个队列来存储入度为0的节点。
  2. 2.初始化所有节点的入度为0,并统计每个节点的入度。
  3. 3.将所有入度为0的节点加入队列。
  4. 4.循环执行以下步骤,直到队列为空: a. 从队列中取出一个节点,输出该节点。 b. 遍历该节点所指向的所有邻居节点,并将它们的入度减1。 c. 如果某个邻居节点的入度变为0,则将其加入队列。
  5. 5.如果输出的节点数量等于图中的总节点数,则说明成功完成了拓扑排序;否则,图中存在环路。

如果图G包含环路,则在进行拓扑排序时会发生问题。由于环路导致存在至少一个循环依赖关系,在删除某些边之后,其他结点可能再次形成新的环路。因此,在检测到环路时,拓扑排序无法继续进行,并且输出结果将不完整。

以下是使用Go语言实现上述算法的代码示例:

packagemain
import"fmt"
functopologicalSort(graphmap[int][]int)[]int{
inDegree:=make(map[int]int)
for_,nodes:=rangegraph{
for_,node:=rangenodes{
inDegree[node]++
}
}
queue:=make([]int,0)
fornode,degree:=rangeinDegree{
ifdegree==0{
queue=append(queue,node)
}
}
result:=make([]int,0)
forlen(queue)>0{
currNode:=queue[0]
queue=queue[1:]
result=append(result,currNode)
for_,neighbor:=rangegraph[currNode]{
inDegree[neighbor]--
ifinDegree[neighbor]==0{
queue=append(queue,neighbor)
}
}
}
iflen(result)!=len(graph){
//存在环路,拓扑排序无法完成
returnnil
}
returnresult
}
funcmain(){
graph:=make(map[int][]int)
graph[1]=[]int{2,3}
graph[2]=[]int{4}
graph[3]=[]int{4}
graph[4]=[]int{5}
graph[5]=[]int{}
result:=topologicalSort(graph)
fmt.Println(result)//输出:[12345]
}

请注意,以上代码只是一个简单示例,实际应用中需要根据具体情况进行适当的改进和错误处理。

kimi:

拓扑排序是针对有向无环图(DAG)的一种排序算法,其目的是将图中的所有顶点排成一个线性序列,使得对于任何一条有向边 ( U \rightarrow V ),顶点 ( U ) 都在顶点 ( V ) 的前面。这样的排序不是唯一的。

在有向无环图 ( G=(V,E) ) 上执行拓扑排序的一种方法是使用队列来实现。以下是实现这种思想的步骤:

  1. 1.初始化:创建一个队列和一个数组来记录每个顶点的入度。
  2. Q
  3. inDegree
  4. 2.计算入度:遍历所有边,对于每条边 ( U \rightarrow V ),增加顶点 ( V ) 的入度。
  5. 3.寻找入度为0的顶点:遍历所有顶点,将所有入度为0的顶点加入队列。
  6. Q
  7. 4.拓扑排序:当队列不为空时,执行以下操作:
    • •从队列中移除一个顶点 ( V )。
    • •将 ( V ) 加入拓扑排序的结果数组中。
  • topo
    • •遍历所有从 ( V ) 发出的边,对于每条边 ( V \rightarrow U ),减少顶点 ( U ) 的入度。如果 ( U ) 的入度变为0,则将其加入队列。
  • Q
  1. 5.检查结果:如果拓扑排序的结果数组的长度等于顶点数 ( V ),则排序成功;否则,图中存在环。
  2. topo

如果图 ( G ) 包含环路,拓扑排序将无法完成,因为总会有至少一个顶点的入度不为0,无法将其加入拓扑排序的结果数组中。

以下是使用 Go 语言实现拓扑排序的代码示例:

packagemain
import(
"fmt"
)
functopologicalSort(numVerticesint,edges[][]int)[]int{
//初始化邻接表
graph:=make([][]int,numVertices)
for_,edge:=rangeedges{
graph[edge[0]]=append(graph[edge[0]],edge[1])
}
//计算每个顶点的入度
inDegree:=make([]int,numVertices)
for_,edges:=rangegraph{
for_,to:=rangeedges{
inDegree[to]++
}
}
//寻找所有入度为0的顶点
queue:=make([]int,0)
forv:=0;vifinDegree[v]==0{
queue=append(queue,v)
}
}
//拓扑排序
topo:=make([]int,0)
forlen(queue)>0{
v:=queue[0]
queue=queue[1:]//从队列中移除顶点
topo=append(topo,v)//加入拓扑排序结果
for_,to:=rangegraph[v]{
inDegree[to]--//减少入度
ifinDegree[to]==0{
queue=append(queue,to)
}
}
}
iflen(topo)==numVertices{
returntopo
}else{
fmt.Println("Graphhasacycle")
returnnil
}
}
funcmain(){
numVertices:=6
edges:=[][]int{
{5,2},
{5,0},
{4,0},
{4,1},
{2,3},
{3,1},
}
topoOrder:=topologicalSort(numVertices,edges)
iftopoOrder!=nil{
fmt.Println("TopologicalSortOrder:",topoOrder)
}
}

这段代码首先构建了图的邻接表,然后计算每个顶点的入度,并使用队列来实现拓扑排序。如果图中存在环,函数将输出提示信息并返回。

nil

混元:

拓扑排序的算法解释

拓扑排序是对有向无环图(DAG)的顶点进行排序,使得对于任何一条有向边 $(u, v)$,顶点 $u$ 在排序中都出现在顶点 $v$ 之前。拓扑排序的一种常见算法是通过重复寻找入度为 0 的顶点来实现。

算法步骤

  1. 1.初始化一个队列,用于存储所有入度为 0 的顶点。
  2. 2.将所有入度为 0 的顶点加入队列。
  3. 3.当队列非空时,执行以下操作:
    • •从队列中取出一个顶点 $v$,将其加入到拓扑排序的结果中。
    • •遍历从顶点 $v$ 出发的所有边 $(v, w)$,将顶点 $w$ 的入度减 1。
    • •如果顶点 $w$ 的入度变为 0,则将其加入队列。
  4. 4.重复步骤 3,直到队列为空。

时间复杂度分析

  • •初始化队列:$O(V)$
  • •每次从队列中取出一个顶点并更新相关顶点的入度:$O(E)$
  • •总共需要进行 $V$ 次(因为每个顶点只会被处理一次),所以总的时间复杂度是 $O(V + E)$。

图包含环路的情况

如果图 $G$ 包含环路,那么在执行拓扑排序的过程中,将永远无法找到新的入度为 0 的顶点,因为环路中的顶点总是有入度大于 0 的顶点。这将导致算法无法终止,或者最终结果中包含重复的顶点。

Go 语言实现

下面是使用 Go 语言实现的拓扑排序算法:

packagemain
import(
"fmt"
)
functopologicalSort(graphmap[int][]int)[]int{
//计算每个顶点的入度
inDegree:=make(map[int]int)
foru:=rangegraph{
inDegree[u]=0
}
foru,neighbors:=rangegraph{
for_,v:=rangeneighbors{
inDegree[v]++
}
}
//初始化队列,存储所有入度为0的顶点
queue:=[]int{}
foru,degree:=rangeinDegree{
ifdegree==0{
queue=append(queue,u)
}
}
//拓扑排序的结果
result:=[]int{}
//当队列非空时,执行拓扑排序
forlen(queue)>0{
u:=queue[0]
queue=queue[1:]
result=append(result,u)
for_,v:=rangegraph[u]{
inDegree[v]--
ifinDegree[v]==0{
queue=append(queue,v)
}
}
}
//如果结果中的顶点数小于图中的顶点数,说明图中存在环路
iflen(result)returnnil//图中存在环路,无法完成拓扑排序
}
returnresult
}
funcmain(){
graph:=map[int][]int{
5:{2,0},
4:{0,1},
2:{3},
3:{1},
1:{},
0:{},
}
result:=topologicalSort(graph)
ifresult==nil{
fmt.Println("图中存在环路,无法完成拓扑排序")
}else{
fmt.Println("拓扑排序结果:",result)
}
}

在这段代码中,我们首先计算每个顶点的入度,然后初始化一个队列来存储所有入度为 0 的顶点。接着,我们执行拓扑排序的循环,直到队列为空。如果最终的排序结果中的顶点数小于图中的顶点数,我们返回来表示图中存在环路。

nil

声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
苏联狙神瓦西里:潜伏四天一枪不开,一颗子弹带走德军狙击之王!

苏联狙神瓦西里:潜伏四天一枪不开,一颗子弹带走德军狙击之王!

混沌录
2026-01-27 22:44:08
四川7名干部拟任县级领导职务

四川7名干部拟任县级领导职务

秀我广元
2026-01-28 14:31:10
险爆大冷!卫冕冠军辛纳惊魂一幕!克服高温抽筋苦战4盘艰难晋级

险爆大冷!卫冕冠军辛纳惊魂一幕!克服高温抽筋苦战4盘艰难晋级

搏击江湖
2026-01-27 20:53:46
法国退出北约,动议已提交给法国议会!

法国退出北约,动议已提交给法国议会!

达文西看世界
2026-01-18 17:30:27
不看美国脸色,中国军舰大大方方开进“后院”!时间点很特殊

不看美国脸色,中国军舰大大方方开进“后院”!时间点很特殊

栗子评述
2026-01-28 14:06:17
那个把谷歌变成“印度理工分校”的男人,凭什么值年薪15亿?

那个把谷歌变成“印度理工分校”的男人,凭什么值年薪15亿?

三农老历
2026-01-27 16:02:55
巴菲特曾在1997年买入了1.297亿盎司白银,相当于全球年度供应量25%和年度需求量的16%...

巴菲特曾在1997年买入了1.297亿盎司白银,相当于全球年度供应量25%和年度需求量的16%...

地平线全球策略
2026-01-27 19:32:40
谢楠:1984年违规开枪被迫复员,20年后,她成为了人民心中的英雄

谢楠:1984年违规开枪被迫复员,20年后,她成为了人民心中的英雄

百年历史老号
2024-02-04 08:33:52
南海撞机王伟成功跳伞,咋10万人都找不到他?直到20多年后才明白

南海撞机王伟成功跳伞,咋10万人都找不到他?直到20多年后才明白

鹤羽说个事
2025-12-12 14:31:49
高枕无忧了!库里常规赛三分球历史第一 哈登赶超可能几乎为零

高枕无忧了!库里常规赛三分球历史第一 哈登赶超可能几乎为零

体坛八点半的那些事儿
2026-01-28 09:48:06
958克坚果礼盒实际只有33克坚果,百草味回应:系经销商私自组合,现已下架

958克坚果礼盒实际只有33克坚果,百草味回应:系经销商私自组合,现已下架

中国能源网
2026-01-27 11:58:04
离婚8年,一别两宽,如今的黄景瑜,已是王雨馨高攀不起的存在

离婚8年,一别两宽,如今的黄景瑜,已是王雨馨高攀不起的存在

胡一舸南游y
2026-01-26 20:28:04
16枚导弹全部击中,基辅电厂又重创!乌克兰或后悔先挑起能源战

16枚导弹全部击中,基辅电厂又重创!乌克兰或后悔先挑起能源战

卷史
2026-01-28 10:17:29
山东巨人徐富海去世,身高2.4米,患十多种疾病,母亲拉着他要饭

山东巨人徐富海去世,身高2.4米,患十多种疾病,母亲拉着他要饭

窥史
2026-01-26 19:51:31
奥纳纳开谈今夏重返国米,曼联恐需倒贴工资清洗!卖2000万就不亏

奥纳纳开谈今夏重返国米,曼联恐需倒贴工资清洗!卖2000万就不亏

罗米的曼联博客
2026-01-28 10:39:29
32岁猝死程序员公司发全体邮件:去世员工未按要求做体检……

32岁猝死程序员公司发全体邮件:去世员工未按要求做体检……

柴狗夫斯基
2026-01-28 08:45:31
今天,A股涨到4170,做好准备,明天,1月29日,大概率会这样走

今天,A股涨到4170,做好准备,明天,1月29日,大概率会这样走

有范又有料
2026-01-28 15:03:36
泰山给8国脚放假,赴广州冬训 彭啸非卖品 徐江:海港报价1000万+

泰山给8国脚放假,赴广州冬训 彭啸非卖品 徐江:海港报价1000万+

替补席看球
2026-01-28 14:19:45
全国9地取消固定分时电价

全国9地取消固定分时电价

财联社
2026-01-27 13:58:05
极限攀岩家登顶后,民进党当局竟给台北101“改名”,引发岛内网民不满

极限攀岩家登顶后,民进党当局竟给台北101“改名”,引发岛内网民不满

环球网资讯
2026-01-27 06:57:14
2026-01-28 15:48:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1113文章数 54关注度
往期回顾 全部

科技要闻

它是神也是毒!Clawdbot改名卷入千万诈骗

头条要闻

运动员退役后到山区支教:卖掉36块奖牌 与女友分手

头条要闻

运动员退役后到山区支教:卖掉36块奖牌 与女友分手

体育要闻

冒充职业球员,比赛规则还和对手现学?

娱乐要闻

王祖贤入驻某音:一条7秒视频吸粉55万

财经要闻

40倍杠杆断裂!水贝一黄金平台兑付困难

汽车要闻

中国豪华车老大之争:奥迪凭啥干掉奔驰宝马?

态度原创

房产
本地
数码
旅游
公开课

房产要闻

实景兑现在即!绿城,在海棠湾重新定义终极旅居想象!

本地新闻

云游中国|拨开云雾,巫山每帧都是航拍大片

数码要闻

379元 小米首款室外4G摄像机发布:流量免费、不限速 一台顶两台

旅游要闻

梦幻“冰世界”

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版