最新回答 / 董瘦瘦
这是克鲁斯卡尔算法的原理啊在邻接矩阵里取出所有边后找出最小边最小边对应的点不在集合中则添加进去一个在的话则把另一个添加到该点集合中两个都在同一个点集合中,只能抛弃这条边,为什么呢?因为会形成回环。例如:有一个点集合为{A,B,C},要找的边为AC,对应两个点都在,再选AC这条边的话A-B,B-C,A-C就形成回环,所以在程序里continue跳过两个点在不同的点集合中,说明这两个点集合代表的边可以通过当前这条边连接起来,对应程序里的处理就是拼接两个vector
2020-02-10
最新回答 / 国宝阿宝
想明白了。应该以“这一层”和“下一层”的说法来说好理解一些,毕竟以“上一层”来说,是以正在查找的和preVec里的节点有连接的节点所构成的一层节点为参照点,然而这一层节点是不一定有的。
2019-08-15
最新回答 / 夜木凝冰
按道理讲,创建动态分配的数组时是不可以初始化的,只能在后续将其所有元素逐一设置为零。 所以,在构造函数中创建完矩阵数组后,是需要给数组全部元素赋值为零的。否则就是随机数。 有个便捷函数是:memset(m_pMatrix, 0, m_iCapacity *m_iCapacity * sizeof(int));。教程里面也有的。
2019-08-08
最新回答 / 木木暮
你的意思是在for (int i = 0; i < m_iCapacity; i++)前用 m_pNodeArray[temp].m_bIsVisited = true;吗?这样效果是一样的,当把点放进去时就已经用到了,等下加下一个的时候才设置为已访问有点说不过去
2019-07-27
最新回答 / 慕斯卡4155732
想通了,递归调用实际上是一个嵌套循环,它需要一层一层的从内将每一个for循环执行完再跳出当前循环,直到跳到第一个for循环,并继续执行下去。这个时候nodeIndex=0,i=2,再在第一行寻找下一个点即D
2018-12-31