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

文心一言 VS 讯飞星火 VS chatgpt (299)-- 算法导论22.1 3题

0
分享至

三、有向图 $G=(V,E)$ 的转置是图 $G^{T} =(V,E^{T})$,这里 $E^{T} ={(v,u)∈ V \times V$:(u,v)∈ E}$因此,图 $G^{T}$ 就是将有向图$G$中所有边的方向反过来而形成的图。对于邻接链表和邻接矩阵两种表示,请给出从图$G$计算出$G^{T}$的有效算法,并分析算法的运行时间。如果要写代码,请用go语言。

文心一言:

为了从有向图 $G$ 计算出其转置图 $G^T$,我们可以分别针对邻接链表和邻接矩阵两种表示形式来设计算法。下面我将分别给出这两种方法的描述以及相应的 Go 语言代码实现。

1. 邻接链表表示

在邻接链表中,每个节点维护一个链表,链表中的每个节点表示从当前节点出发可以到达的节点。为了得到转置图,我们需要遍历原图的所有边,并将每条边的方向反转,即对于边 $(u, v)$,我们在 $G^T$ 中添加边 $(v, u)$。

算法步骤

  1. 1.初始化 $G^T$ 的邻接链表表示。
  2. 2.遍历 $G$ 的每一条边 $(u, v)$。
  3. 3.在 $G^T$ 中,将 $v$ 添加到 $u$ 的链表中(如果 $u$ 的链表不存在,则先创建)。

Go 代码实现

packagemain
import"fmt"
typeGraphstruct{
adjListmap[int][]int
}
funcNewGraph()*Graph{
return&Graph{adjList:make(map[int][]int)}
}
func(g*Graph)AddEdge(from,toint){
g.adjList[from]=append(g.adjList[from],to)
}
func(g*Graph)Transpose()*Graph{
transposed:=NewGraph()
forfrom,tos:=rangeg.adjList{
for_,to:=rangetos{
transposed.AddEdge(to,from)
}
}
returntransposed
}
funcmain(){
g:=NewGraph()
g.AddEdge(0,1)
g.AddEdge(0,2)
g.AddEdge(1,2)
g.AddEdge(2,0)
gt:=g.Transpose()
fmt.Println("TransposedGraph:")
forfrom,tos:=rangegt.adjList{
fmt.Printf("%d->%v\n",from,tos)
}
}

时间复杂度: $O(V+E)$,其中 $V$ 是节点数,$E$ 是边数。因为我们需要遍历每条边并可能更新每个节点的链表。

2. 邻接矩阵表示

在邻接矩阵中,矩阵的每个元素 $A[i][j]$ 表示从节点 $i$ 到节点 $j$ 是否存在边。为了得到转置图,我们只需将矩阵转置即可。

算法步骤

  1. 1.初始化 $G^T$ 的邻接矩阵,大小与 $G$ 相同。
  2. 2.遍历 $G$ 的邻接矩阵的每一个元素 $A[i][j]$。
  3. 3.如果 $A[i][j]$ 非零(或根据图的类型,可能有其他表示方式),则将 $G^T$ 的邻接矩阵中 $A^T[j][i]$ 设置为相同的值。

Go 代码实现

packagemain
import"fmt"
typeMatrixGraphstruct{
matrix[][]int
sizeint
}
funcNewMatrixGraph(sizeint)*MatrixGraph{
return&MatrixGraph{matrix:make([][]int,size),size:size}
}
func(mg*MatrixGraph)AddEdge(from,toint){
mg.matrix[from][to]=1
}
func(mg*MatrixGraph)Transpose()*MatrixGraph{
transposed:=NewMatrixGraph(mg.size)
fori:=0;iforj:=0;jtransposed.matrix[j][i]=mg.matrix[i][j]
}
}
returntransposed
}
funcmain(){
mg:=NewMatrixGraph(3)
mg.AddEdge(0,1)
mg.AddEdge(0,2)
mg.AddEdge(1,2)
mg.AddEdge(2,0)
mgt:=mg.Transpose()
fmt.Println("TransposedMatrixGraph:")
for_,row:=rangemgt.matrix{
fmt.Println(row)
}
}

讯飞星火:

首先,我们来分析邻接链表和邻接矩阵两种表示方法。

  1. 1.邻接链表表示法: 在邻接链表中,每个顶点都有一个链表,链表中的每个元素表示与该顶点相邻的顶点。为了计算转置图$G^T$,我们需要遍历原图$G$的所有顶点,然后遍历每个顶点的链表,将链表中的顶点添加到新链表中,表示转置后的边。
  2. 2.邻接矩阵表示法: 在邻接矩阵中,矩阵的每个元素表示两个顶点之间是否存在边。为了计算转置图$G^T$,我们需要将原矩阵进行转置操作,即将矩阵的行和列互换。

接下来,我们给出两种表示法的算法实现:

  1. 1.邻接链表表示法:

functransposeGraph(graph[]map[int]struct{})map[int]map[int]struct{}{
transposedGraph:=make(map[int]map[int]struct{})
foru,neighbors:=rangegraph{
transposedNeighbors:=make(map[int]struct{})
forv:=rangeneighbors{
transposedNeighbors[v]=struct{}{}
}
transposedGraph[u]=transposedNeighbors
}
returntransposedGraph
}

  1. 1.邻接矩阵表示法:

functransposeMatrix(matrix[][]bool)[][]bool{
rows:=len(matrix)
cols:=len(matrix[0])
transposedMatrix:=make([][]bool,cols)
fori:=rangetransposedMatrix{
transposedMatrix[i]=make([]bool,rows)
forj:=rangetransposedMatrix[i]{
transposedMatrix[i][j]=matrix[j][i]
}
}
returntransposedMatrix
}

运行时间分析:

  1. 1.邻接链表表示法的时间复杂度为O(E),其中E为原图中的边数。因为我们需要遍历所有顶点的链表。
  2. 2.邻接矩阵表示法的时间复杂度为O(V^2),其中V为原图中的顶点数。因为我们需要遍历整个矩阵并进行转置操作。

360智脑:

邻接链表表示法

在邻接链表表示法中,我们可以直接遍历原图$G$的每个节点的邻接链表,然后将每条边的方向反转后添加到新图$G^{T}$的对应节点上。以下是用Go语言实现的代码:

typeGraphstruct{
Vertices[]*Node
}
typeNodestruct{
Valueint
Adjacent[]*Node
}
func(g*Graph)Transpose()*Graph{
transposed:=&Graph{make([]*Node,len(g.Vertices))}
fori,node:=rangeg.Vertices{
transposed.Vertices[i]=&Node{node.Value,make([]*Node,0)}
}
for_,node:=rangeg.Vertices{
for_,neighbor:=rangenode.Adjacent{
//Addedgefromneighbortocurrentnodeinthetransposedgraph
transposed.Vertices[neighbor.Value].Adjacent=append(transposed.Vertices[neighbor.Value].Adjacent,node)
}
}
returntransposed
}

该算法的运行时间是$O(|V| + |E|)$,其中$|V|$是图中顶点的数量,$|E|$是图中边的数量。这是因为我们需要遍历每个节点和每条边一次。

邻接矩阵表示法

在邻接矩阵表示法中,我们可以通过交换矩阵的行和列来得到转置图。以下是用Go语言实现的代码:

typeMatrixGraphstruct{
Matrix[][]bool
}
func(m*MatrixGraph)Transpose()*MatrixGraph{
n:=len(m.Matrix)
transposed:=make([][]bool,n)
fori:=rangetransposed{
transposed[i]=make([]bool,n)
}
fori:=0;iforj:=0;jtransposed[j][i]=m.Matrix[i][j]
}
}
return&MatrixGraph{transposed}
}

该算法的运行时间是$O(|V|^2)$,因为在最坏的情况下,我们需要访问矩阵中的每个元素。如果图是稠密的(即$|E| \approx |V|^2$),那么这个算法的时间复杂度与邻接链表表示法的算法相当。但如果图是稀疏的(即$|E| << |V|^2$),那么邻接链表表示法的算法会更高效。

智谱清言:

在图的邻接链表表示中,每个顶点对应一个链表,链表中包含所有与该顶点相邻的顶点的信息。在邻接矩阵表示中,矩阵的行和列代表图的顶点,矩阵中的元素表示相应顶点之间的边。转置图意味着我们需要交换原图中边的方向。 下面分别给出使用邻接链表和邻接矩阵表示的有向图转置的算法,并使用Go语言实现。

邻接链表表示

算法

  1. 1.创建一个新的顶点列表,复制原图的顶点。
  2. 2.遍历原图的每个顶点。
  3. 3.对于每个顶点,遍历它的邻接表。
  4. 4.对于邻接表中的每条边,在转置图中添加边。
  5. (u, v)
  6. (v, u)

运行时间:O(V + 2E),其中 V 是顶点数,E 是边数。遍历所有顶点一次,每个顶点处理它的邻接表,每条边被处理两次(一次在原图中,一次在转置图中)。Go 代码实现

packagemain
import(
"fmt"
)
typeEdgestruct{
Toint
}
typeGraphstruct{
Vertices[]int
Edges[]*Edge
}
func(g*Graph)AddEdge(from,toint){
g.Edges=append(g.Edges,&Edge{To:to})
}
funcTransposeGraph(g*Graph)*Graph{
transposed:=&Graph{Vertices:make([]int,len(g.Vertices))}
for_,v:=rangeg.Vertices{
transposed.AddEdge(v,g.Vertices...)
}
returntransposed
}
funcmain(){
g:=&Graph{
Vertices:[]int{0,1,2,3},
Edges:[]*Edge{},
}
g.AddEdge(0,1)
g.AddEdge(0,2)
g.AddEdge(1,2)
g.AddEdge(2,3)
transposed:=TransposeGraph(g)
fmt.Println("TransposedGraphEdges:")
for_,edge:=rangetransposed.Edges{
fmt.Printf("(%d,%d)\n",edge.To,edge.From)
}
}

邻接矩阵表示

算法

  1. 1.创建一个新的顶点列表,复制原图的顶点。
  2. 2.遍历原图的邻接矩阵。
  3. 3.对于矩阵中的每个元素,如果为 1(表示存在从 u 到 v 的边),在转置图中设置为 1。
  4. A[u][v]
  5. A[v][u]

运行时间:O(V^2),其中 V 是顶点数。遍历整个邻接矩阵。Go 代码实现

packagemain
import(
"fmt"
)
funcTransposeGraph(A[][]int)[][]int{
V:=len(A)
transposed:=make([][]int,V)
fori:=rangetransposed{
transposed[i]=make([]int,V)
}
fori:=0;iforj:=0;jifA[i][j]==1{
transposed[j][i]=1
}
}
}
returntransposed
}
funcmain(){
A:=[][]int{
{0,1,1},
{1,0,1},
{1,1,0},
}
transposed:=TransposeGraph(A)
fmt.Println("TransposedGraph:")
for_,row:=rangetransposed{
fmt.Println(row)
}
}

上述代码展示了如何使用 Go 语言实现有向图的转置,

天工:

为了计算有向图 $G$ 的转置 $G^{T}$,我们可以分别针对邻接链表和邻接矩阵两种表示方式设计算法。

邻接链表表示

算法描述

  1. 1.遍历图 $G$ 的邻接链表。
  2. 2.对于每条边 $(u, v)$,将其添加到 $G^{T}$ 的邻接链表中,但方向相反,即作为顶点 $v$ 的邻接边。
  3. 3.重复步骤2直到所有边都被处理。

运行时间分析

假设图 $G$ 有 $n$ 个顶点和 $m$ 条边,那么这个算法的时间复杂度是 $O(n + m)$,因为我们需要遍历所有的边一次。空间复杂度也是 $O(n + m)$,因为我们创建了一个新的邻接链表来存储转置图。

Go语言实现

typeGraphstruct{
vertices[]*Vertex
}
typeVertexstruct{
idint
adjacent[]*Vertex
}
functransposeGraph(g*Graph)*Graph{
t:=&Graph{make([]*Vertex,len(g.vertices))}
fori,v:=rangeg.vertices{
t.vertices[i]=&Vertex{id:v.id}
}
for_,v:=rangeg.vertices{
for_,neighbor:=rangev.adjacent{
t.vertices[neighbor.id].adjacent=append(t.vertices[neighbor.id].adjacent,t.vertices[v.id])
}
}
returnt
}

邻接矩阵表示

算法描述

  1. 1.遍历图 $G$ 的邻接矩阵。
  2. 2.对于每个元素 $(i, j)$,如果 $G[i][j]$ 为真(表示有一条从 $i$ 到 $j$ 的边),则在 $G^{T}$ 的邻接矩阵中设置 $G^{T}[j][i]$ 为真。
  3. 3.重复步骤2直到所有元素都被处理。

运行时间分析

这个算法的时间复杂度是 $O(n^2)$,其中 $n$ 是顶点的数量,因为我们需要遍历整个邻接矩阵。空间复杂度也是 $O(n^2)$,因为我们创建了一个新的邻接矩阵来存储转置图。

Go语言实现

typeMatrixGraphstruct{
matrix[][]bool
}
functransposeMatrixGraph(g*MatrixGraph)*MatrixGraph{
n:=len(g.matrix)
t:=&MatrixGraph{make([][]bool,n)}
fori:=ranget.matrix{
t.matrix[i]=make([]bool,n)
}
fori:=0;iforj:=0;jifg.matrix[i][j]{
t.matrix[j][i]=true
}
}
}
returnt
}

在这两个实现中,我们都创建了一个新的图或矩阵来存储转置图的结果。如果我们不想使用额外的空间,我们可以考虑在原始图或矩阵上直接修改,但这可能会影响到原始数据的完整性。

灵小智:

对于邻接链表表示的有向图$G=(V,E)$,可以按照以下步骤计算出转置图$G^T=(V,E^T)$的邻接链表表示:

  1. 1.初始化一个新的空邻接链表表示的转置图$G^T$。
  2. 2.对于有向图$G$中的每个顶点$v\in V$,遍历其邻接点列表中的每个邻接点$u$。
  3. 3.对于每个邻接点$u$,将边$(u,v)$添加到$G^T$的邻接链表中,即将$u$加入到$v$的邻接点列表中。

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

packagemain
import"fmt"
//定义有向图的顶点结构
typeVertexstruct{
valueint
next*Vertex
}
//定义有向图的邻接链表结构
typeGraphstruct{
Vint
Adj[]*Vertex
}
//函数实现有向图的转置操作
functransposeGraph(g*Graph)*Graph{
transposed:=&Graph{V:g.V,Adj:make([]*Vertex,g.V)}
foru:=0;uforv:=g.Adj[u];v!=nil;v=v.next{
transposed.Adj[v.value]=&Vertex{value:u,next:transposed.Adj[v.value]}
}
}
returntransposed
}
funcmain(){
//举例一个有向图的邻接链表表示
V:=4
adj:=make([]*Vertex,V)
adj[0]=&Vertex{value:1,next:&Vertex{value:2,next:nil}}
adj[1]=&Vertex{value:2,next:nil}
adj[2]=&Vertex{value:0,next:&Vertex{value:3,next:nil}}
adj[3]=nil
g:=&Graph{V:V,Adj:adj}
//计算有向图的转置图
transposed:=transposeGraph(g)
//输出转置图的邻接链表表示
fori:=0;ifmt.Printf("顶点%d的邻接点:",i)
forv:=transposed.Adj[i];v!=nil;v=v.next{
fmt.Printf("%d",v.value)
}
fmt.Println()
}
}

该算法的运行时间为$O(V+E)$,其中$V$为顶点数,$E$为边数。

chatgpt:

以下是使用邻接链表表示的图$G$计算出$G^{T}$的有效算法,并给出了相应的Go语言代码示例。

算法步骤:

  1. 1.创建一个空的图$G^{T}$
  2. 2.遍历原图$G$中的每个顶点$v$,对于每个顶点$v$,执行以下操作:
    • •如果$v$在邻接链表中不存在,则将其加入邻接链表中
    • •遍历与顶点$v$相关联的边$(v, u)$,其中$u$为目标顶点。对于每条边$(v, u)$,将其反向添加到对应的邻接链表中:即将边$(u, v)$添加到图$G^{T}$的邻接链表中

代码示例(Go语言):

packagemain
import"fmt"
typeNodestruct{
valueint
next*Node
}
typeGraphstruct{
vertices[]*Node
}
funcNewGraph()*Graph{
return&Graph{}
}
func(g*Graph)addEdge(src,destint){
newNode:=&Node{value:dest,next:nil}
ifg.vertices[src]==nil{
g.vertices[src]=newNode
}else{
curr:=g.vertices[src]
forcurr.next!=nil{
curr=curr.next
}
curr.next=newNode
}
}
func(g*Graph)transpose()*Graph{
transposedGraph:=NewGraph()
fori:=rangeg.vertices{
transposedGraph.vertices=append(transposedGraph.vertices,nil)
}
fori:=rangeg.vertices{
curr:=g.vertices[i]
forcurr!=nil{
transposedGraph.addEdge(curr.value,i)
curr=curr.next
}
}
returntransposedGraph
}
funcmain(){
graph:=NewGraph()
verticesCount:=5
fori:=0;igraph.vertices=append(graph.vertices,nil)
}
//添加边
graph.addEdge(0,1)
graph.addEdge(0,2)
graph.addEdge(1,3)
graph.addEdge(2,3)
graph.addEdge(3,4)
fmt.Println("原图G:")
fori,vertex:=rangegraph.vertices{
curr:=vertex
forcurr!=nil{
fmt.Printf("%d->%d\n",i,curr.value)
curr=curr.next
}
}
transposedGraph:=graph.transpose()
fmt.Println("\n转置图G^T:")
fori,vertex:=rangetransposedGraph.vertices{
curr:=vertex
forcurr!=nil{
fmt.Printf("%d->%d\n",i,curr.value)
curr=curr.next
}
}
}

该算法的运行时间取决于顶点数和边数。假设有$n$个顶点和$m$条边,则构建邻接链表的时间复杂度为$O(m)$,转置操作需要遍历整个邻接链表,时间复杂度为$O(n+m)$。因此,总体运行时间复杂度为$O(n+m)$。

注意:这只是一种实现方式,具体的算法细节和实现可能因应用场景和数据结构的不同而有所调整。

kimi:

首先,我们来分析两种图的表示方法:邻接链表和邻接矩阵,以及如何从图 ( G ) 计算出其转置图 ( G^T )。

邻接链表表示

邻接链表通常使用一个数组来表示,数组的每个元素是一个链表,链表中的每个节点代表一个邻接点和边的权重(如果有的话)。对于有向图 ( G ),如果 ( u ) 到 ( v ) 有一条边,那么在 ( u ) 的链表中会有一个指向 ( v ) 的节点。

算法步骤:

  1. 1.初始化一个新的邻接链表,其大小与 ( G ) 相同。
  2. 2.遍历原始图 ( G ) 的每个顶点 ( u )。
  3. 3.对于 ( u ) 的每个邻接点 ( v ),将 ( v ) 添加到 ( G^T ) 中 ( u ) 的链表中。
  4. 4.完成所有顶点的遍历后,( G^T ) 的邻接链表就构建好了。

时间复杂度:

  • •假设 ( G ) 有 ( n ) 个顶点和 ( m ) 条边。
  • •每个顶点的邻接链表遍历时间复杂度为 ( O(\text{deg}(u)) ),其中 ( \text{deg}(u) ) 是顶点 ( u ) 的度。
  • •总的时间复杂度为 ( O(m) ),因为每个边只被访问一次。

邻接矩阵表示

邻接矩阵是一个 ( n \times n ) 的矩阵,其中 ( n ) 是顶点的数量。如果 ( G ) 中 ( u ) 到 ( v ) 有边,则矩阵中的 ( G[u][v] ) 为 1(或边的权重),否则为 0。

算法步骤:

  1. 1.初始化一个与 ( G ) 同样大小的矩阵 ( G^T ),并将所有元素设置为 0。
  2. 2.遍历 ( G ) 的邻接矩阵,对于每个非零元素 ( G[u][v] ):
    • •将 ( G^T[v][u] ) 设置为 ( G[u][v] )。
  3. 3.完成所有元素的遍历后,( G^T ) 的邻接矩阵就构建好了。

时间复杂度:

  • •由于矩阵是 ( n \times n ),总的时间复杂度是 ( O(n^2) )。

Go 语言实现

以下是使用 Go 语言实现的邻接链表和邻接矩阵转置的示例代码:

packagemain
import"fmt"
//邻接链表的节点
typeAdjListNodestruct{
vertexint
next*AdjListNode
}
//邻接链表的图
typeGraphAdjListstruct{
adjList[]*AdjListNode
Vint//顶点的数量
}
//添加边
func(g*GraphAdjList)addEdge(v,wint){
newEdge:=&AdjListNode{vertex:w,next:g.adjList[v]}
g.adjList[v]=newEdge
}
//计算转置图的邻接链表
func(g*GraphAdjList)transpose()*GraphAdjList{
gT:=&GraphAdjList{V:g.V,adjList:make([]*AdjListNode,g.V)}
forv:=0;vforadj:=g.adjList[v];adj!=nil;adj=adj.next{
gT.addEdge(adj.vertex,v)
}
}
returngT
}
//邻接矩阵的图
typeGraphAdjMatrixstruct{
matrix[][]int
Vint//顶点的数量
}
//计算转置图的邻接矩阵
func(g*GraphAdjMatrix)transpose()*GraphAdjMatrix{
gT:=&GraphAdjMatrix{V:g.V,matrix:make([][]int,g.V)}
fori:=0;igT.matrix[i]=make([]int,g.V)
forj:=0;jgT.matrix[i][j]=g.matrix[j][i]
}
}
returngT
}
funcmain(){
//示例:使用邻接链表和邻接矩阵构建图并计算其转置
//这里省略了图的构建过程,直接展示转置操作
//...
}

请注意,上述代码只是一个简单的示例,实际应用中可能需要更多的功能,例如图的构建、边的权重处理等。

混元:

为了计算有向图 $G=(V,E)$ 的转置 $G^T=(V,E^T)$,我们可以分别针对邻接链表和邻接矩阵两种表示方法给出相应的算法,并分析它们的运行时间。

邻接链表表示法

算法描述

  1. 1.初始化一个空的邻接链表来存储转置图的边。
  2. 2.遍历原图 $G$ 的每个节点 $u$。
  3. 3.对于节点 $u$ 的每个邻接节点 $v$,在转置图中添加一条从 $v$ 到 $u$ 的边。
  4. 4.返回转置图的邻接链表表示。

Go 语言实现

typeAdjacencyListstruct{
Vint
Adj[][]int
}
funcTransposeAdjacencyList(graphAdjacencyList)AdjacencyList{
V:=graph.V
transposed:=make([][]int,V)
foru:=0;ufor_,v:=rangegraph.Adj[u]{
transposed[v]=append(transposed[v],u)
}
}
returnAdjacencyList{V:V,Adj:transposed}
}

运行时间分析

  • •时间复杂度:$O(|E|)$,其中 $|E|$ 是原图的边数。因为我们需要遍历每条边来构建转置图。

邻接矩阵表示法

算法描述

  1. 1.初始化一个与原图 $G$ 大小相同的邻接矩阵来存储转置图的边。
  2. 2.遍历原图 $G$ 的每个节点对 $(u, v)$。
  3. 3.如果 $(u, v)$ 在原图中存在边,则在转置图的邻接矩阵中将 $(v, u)$ 的对应位置设为边的权重(通常为1)。
  4. 4.返回转置图的邻接矩阵表示。

Go 语言实现

typeAdjacencyMatrixstruct{
Vint
Mat[][]int
}
funcTransposeAdjacencyMatrix(graphAdjacencyMatrix)AdjacencyMatrix{
V:=graph.V
transposed:=make([][]int,V)
fori:=rangetransposed{
transposed[i]=make([]int,V)
}
foru:=0;uforv:=0;vifgraph.Mat[u][v]!=0{
transposed[v][u]=graph.Mat[u][v]
}
}
}
returnAdjacencyMatrix{V:V,Mat:transposed}
}

运行时间分析

  • •时间复杂度:$O(|V|^2)$,其中 $|V|$ 是原图的节点数。因为我们需要遍历矩阵中的每个元素来构建转置图。

在实际应用中,如果图的边数远小于节点数的平方,那么使用邻接链表表示法会更高效;反之,如果图的边数接近或超过节点数的平方,邻接矩阵表示法可能更合适。

声明:内容由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.

相关推荐
热点推荐
如果不差钱,退休后首选这3座城市久居,物价低,还舒服

如果不差钱,退休后首选这3座城市久居,物价低,还舒服

蜉蝣说
2026-02-14 16:06:23
央视名主持退休八载返聘,七十四岁最美姥姥

央视名主持退休八载返聘,七十四岁最美姥姥

収起了底线
2026-02-15 05:04:09
中国重金打造游泳赛事,美国媒体:这些钱是我们所能提供的十多倍

中国重金打造游泳赛事,美国媒体:这些钱是我们所能提供的十多倍

杨华评论
2026-02-14 19:00:38
又一亚洲国家冬奥零金,14日奖牌榜爆冷,中国队排第几?

又一亚洲国家冬奥零金,14日奖牌榜爆冷,中国队排第几?

民哥台球解说
2026-02-14 07:54:53
《生命树》热播触发捐款风波:一官方基金会提醒警惕“非法募捐”,一社会组织收到数千人捐款正退捐,青海多方回应

《生命树》热播触发捐款风波:一官方基金会提醒警惕“非法募捐”,一社会组织收到数千人捐款正退捐,青海多方回应

极目新闻
2026-02-14 19:13:57
晚饭七分饱被推翻了?医生调查:过了56岁,吃饭尽量要做到这5点

晚饭七分饱被推翻了?医生调查:过了56岁,吃饭尽量要做到这5点

蜉蝣说
2026-02-03 15:00:19
善恶终有报!49岁的李铁再传噩耗,终是为自己的贪婪付出代价

善恶终有报!49岁的李铁再传噩耗,终是为自己的贪婪付出代价

痞子时代
2026-02-12 15:36:53
奉劝大家:过年别买这5种干果,全都是科技,白送都别要!

奉劝大家:过年别买这5种干果,全都是科技,白送都别要!

江江食研社
2026-02-14 07:30:09
高云翔花20元在地库剪发节俭,45岁胡须已白,小酒窝和继父三亚玩

高云翔花20元在地库剪发节俭,45岁胡须已白,小酒窝和继父三亚玩

离离言几许
2026-02-13 16:43:00
张一鸣以一己之力单挑整个互联网

张一鸣以一己之力单挑整个互联网

磐石之心
2026-02-12 12:01:31
中美谈了60分钟,鲁比奥赔笑脸,美方松开王毅的手,对华作出承诺

中美谈了60分钟,鲁比奥赔笑脸,美方松开王毅的手,对华作出承诺

娱乐小可爱蛙
2026-02-15 04:44:34
尼日尔正式向法国宣战,局势紧张升级!

尼日尔正式向法国宣战,局势紧张升级!

乐天派WMQ
2026-02-13 00:46:02
2014年,北京女博士李香蓉因接受不了新郎身份,在车内将其几刀刺死

2014年,北京女博士李香蓉因接受不了新郎身份,在车内将其几刀刺死

红豆讲堂
2024-10-14 15:30:03
“不好看,有点吓人!”艺考生晒堪比小燕子的大眼睛,引人不适

“不好看,有点吓人!”艺考生晒堪比小燕子的大眼睛,引人不适

蝴蝶花雨话教育
2026-02-08 12:47:42
传闻被证实!被撞销售不幸离世,提车小伙2分钟经历了大喜大悲

传闻被证实!被撞销售不幸离世,提车小伙2分钟经历了大喜大悲

趣味八卦
2025-12-21 06:00:33
高市病历被曝光,日本只能选择放人,中日之间还有第三条路可走?

高市病历被曝光,日本只能选择放人,中日之间还有第三条路可走?

心也简单
2026-02-15 04:42:46
还有3天过年曝3大瓜!主动投案、卷款失联、蔡磊离死亡越来越近

还有3天过年曝3大瓜!主动投案、卷款失联、蔡磊离死亡越来越近

寒士之言本尊
2026-02-14 15:29:46
从金融战到生物战,美国碰了中国最痛的底线

从金融战到生物战,美国碰了中国最痛的底线

华山穹剑
2026-02-02 20:38:46
江苏口碑堪忧的五所大学!被人民日报点名批评,学生谨慎报考

江苏口碑堪忧的五所大学!被人民日报点名批评,学生谨慎报考

音乐时光的娱乐
2026-02-15 00:26:14
惊天逆转!中国冰壶女队8比7击败意大利

惊天逆转!中国冰壶女队8比7击败意大利

澎湃新闻
2026-02-14 19:02:27
2026-02-15 05:55:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1129文章数 57关注度
往期回顾 全部

科技要闻

字节跳动官宣豆包大模型今日进入2.0阶段

头条要闻

泽连斯基:冲突可以结束 但首先要结束得体面

头条要闻

泽连斯基:冲突可以结束 但首先要结束得体面

体育要闻

最戏剧性的花滑男单,冠军为什么是他?

娱乐要闻

春晚第五次联排路透 明星积极饭撒互动

财经要闻

谁在掌控你的胃?起底百亿"飘香剂"江湖

汽车要闻

星光730新春促销开启 80天销量破2.6万台

态度原创

艺术
家居
房产
游戏
数码

艺术要闻

一组罕见年画,藏着我的童年

家居要闻

中古雅韵 乐韵伴日常

房产要闻

三亚新机场,又传出新消息!

粉丝怒了!育碧传奇老游戏重制删原版配乐遭吐槽

数码要闻

键盘可当触控板,Unihertz Titan 2 Elite全键盘手机MWC 2026发布

无障碍浏览 进入关怀版