gpt4 book ai didi

c++ - 使用邻接矩阵的深度优先搜索

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:20 24 4
gpt4 key购买 nike

我正在完成一个类实验,它采用邻接矩阵并确定顶点之间的连通性。虽然我的代码运行了,但它没有给出正确的结果。

我认为我的 while 循环中的第二个 if 语句有问题。任何帮助是极大的赞赏。代码如下:

#include "graph.h"
#include <assert.h>

using namespace std;

bool Graph::connected(int v,int w) {

int visited[SIZE] ={0};

if (v == w)
return adj_matrix[v][v];

Queue<int> Q;
Q.Enqueue(v);

while (!Q.empty()) {
int curr = Q.Dequeue();

if (curr == w)
return true;

int z=0;
for (int i=0; i<SIZE; i++) {
if (adj_matrix[curr][z]==1 && visited[i]==false) {
Q.Enqueue(z);
visited[i]==true;
}
}
}
return false;
}

这是我收到的输出:

0 0 1 0 
0 0 0 0
0 0 0 0
0 0 0 1
vertex 0 is connected to vertices:
vertex 1 is connected to vertices:
vertex 2 is connected to vertices:
vertex 3 is connected to vertices: 3

哪个明显缺少 0 和 2 之间的另一个正确连接?

最佳答案

仔细观察您对变量 i 和 z 的使用。 z 似乎被赋予了值 0,此后就再也没有改变过。您可能想尝试使用更具描述性的变量名称来避免这种混淆。

关于c++ - 使用邻接矩阵的深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10629385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com