亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

普利姆算法的輸出有問題,麻煩大家看看是哪里錯了,謝謝!

https://img1.sycdn.imooc.com//5b4dac06000180b306770442.jpg

void CMap::primTree(int nodeIndex)

{

int value=0;

int edgeCount=0;?

vector<int> nodeVec;

vector<Edge> edgeVec;//備選邊的集合?

cout<<m_pNodeArray[nodeIndex].m_cData<<endl;

nodeVec.push_back(nodeIndex);

m_pNodeArray[nodeIndex].m_bIsVisited = true;

//

while(edgeCount<m_iCapacity-1)

{

int temp=nodeVec.back();//取出最尾部的元素

for(int i=0;i<m_iCapacity;i++)

{

getValueFromMatrix(temp,i,value);

if(value!=0)

{

if(m_pNodeArray[i].m_bIsVisited)

{

continue;

}

else

{

Edge edge(temp,i,value);

edgeVec.push_back(edge);

}

}

} //for循環做完就將與temp相關的所有邊放進edgeVec中?


//從可選邊集合中找出最小的邊?

int edgeIndex = getMinEdge(edgeVec);?

edgeVec[edgeIndex].m_bSelected = true;

cout<<edgeVec[edgeIndex].m_iNodeIndexA<<"--"<<edgeVec[edgeIndex].m_iNodeIndexB<<"? ";

cout<<edgeVec[edgeIndex].m_iWeightValue<<endl;

m_pEdge[edgeCount] = edgeVec[edgeIndex];

edgeCount++;

int nextNodeIndex = edgeVec[edgeIndex].m_iNodeIndexB;

nodeVec.push_back(nextNodeIndex);

m_pNodeArray[nextNodeIndex].m_bIsVisited=true;

cout<<m_pNodeArray[nextNodeIndex].m_cData<<endl;

}

}

int CMap::getMinEdge(vector<Edge>edgeVec)

{

int minWeight=0;

int edgeIndex=0;

int i=0;

for(;i<edgeVec.size();i++)

{

if(!edgeVec[i].m_bSelected)

{

minWeight = edgeVec[i].m_iWeightValue;

edgeIndex =i;

break;?

}

}

if(minWeight==0)//當前edgeVec中的所有邊已經被訪問?

{

return -1;

}

for(;i<edgeVec.size();i++)

{

if(edgeVec[i].m_bSelected)

{

continue;

}

else

{

if(minWeight>edgeVec[i].m_iWeightValue)

{

minWeight=edgeVec[i].m_iWeightValue;

? ? edgeIndex = i;

}

}

}

return edgeIndex;

}


正在回答

1 回答


http://img1.sycdn.imooc.com//5b535ce30001d15406310142.jpg
這里應該是把nextnodeindex放進去 函數是nodevc.back(nextnodeindex) 你手誤了 那樣是放不進去的 這樣的話 下一次還從A找 所以就錯了

1 回復 有任何疑惑可以回復我~
#1

wonder_skye 提問者

程序是正確的,之后發現錯誤是在main函數中,在對圖進行賦值的時候采用的了對有向圖賦值的方法,所以導致結果錯誤。 還是謝謝您的回答!
2018-07-26 回復 有任何疑惑可以回復我~
#2

wonder_skye 提問者

程序是正確的,之后發現錯誤是在main函數中,在對圖進行賦值的時候采用的了對有向圖賦值的方法,所以導致結果錯誤。 還是謝謝您的回答!
2018-07-26 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

普利姆算法的輸出有問題,麻煩大家看看是哪里錯了,謝謝!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號