資源簡介
人工智能課設 羅馬尼亞度假問題 MFC實現

代碼片段和文件信息
#include?“AdjMWGraph.h“
AdjMWGraph::AdjMWGraph(const?int?sz)?:?Vertices(sz)
//構造函數
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? {
if?(i?==?j)?Edge[i][j]?=?0;
else?Edge[i][j]?=?MaxWeight;
}
numOfEdges?=?0;
}
string?AdjMWGraph::GetValue(const?int?v)const
//取頂點v的數值
{
if?(IsVertex(v)?==?0)//判斷序號v的合法性
{
// cout?<“參數v越界出錯!“?< exit(0);
}
return?Vertices.GetData(v);
}
WT?AdjMWGraph::GetWeight(const?int?v1?const?int?v2)const
//取起始頂點為v1、終止頂點為?v2的邊的權值
{
if?(IsVertex(v1)?==?0?||?IsVertex(v2)?==?0)//判斷序號v1和v2的合法性
{
// cout?<“參數v1或v2越界出錯!“?< exit(0);
}
return?Edge[v1][v2];
}
//在圖的鄰接表中插入值為vertex的頂點。如果圖中已經有頂點vertex,則圖不變。
void?AdjMWGraph::InsertVertex(const?string?&vertex)
//插入頂點vertex
{
if?(IsVertex(vertex)<0)//判斷是否圖中已經有值為vertex的頂點,時間復雜度O(n)
Vertices.Insert(vertex?Vertices.Size());//把頂點vertex插入到順序表的當前表尾位置
}
/*?在圖的鄰接矩陣中插入一條邊:
*?如果v1和v2有一個不是圖中的頂點,則圖不變;
*?如果v1和v2相等,則圖不變。
*?如果圖已經包含該邊,則邊的權值更改為新的權值。
*?如果圖沒有包含該邊,則在帶權有向圖G中插入一條第v1個頂點指向第v2個頂點,權值為weight的有向邊。
*/
void?AdjMWGraph::InsertEdge(const?int?v1?const?int?v2?WT?weight)
//插入一條起始頂點為v1、終止頂點為?v2、權值為weight的邊
{
switch?(IsEdge(v1?v2))//判斷圖中第v1個頂點到第v2個頂點的邊的情況
{
case?-2: //如果v1和v2有一個不是圖中的頂點,則圖不變;
break;
case?-1: //如果v1和v2相等,則圖不變。
break;
case?0: //如果邊不存在,則邊的數目加1,插入邊
numOfEdges++;
case?1: //如果邊存在,則修改權值
;
default:
Edge[v1][v2]?=?weight;
}
}
//在圖的鄰接表中刪除第v個頂點以及與該頂點相關的所有邊
//void?AdjMWGraph::DeleteVertex(const?int?v)
//{
// int?ij;
// if(IsVertex(v)==0)//判斷序號v的合法性
// {
// cout<<“刪除頂點時參數v越界出錯!“< // exit(0);
// }
// //刪除所有包含頂點v的邊,并且相應地將邊數減1
// for(i?=?0;?i?// { for(j?=?0;?j?// if((i?==?v?||?j?==?v)?&&?i?!=?j?&&?Edge[i][j]?>?0?&&Edge[i][j]?// numOfEdges--;?
// }?
// for(?i=v;?i // for(?j=0;?j // Edge[i][j]=Edge[i+1][j];? //刪除所有第v個頂點出去的邊
// for(?i=0;?i // for(?j=v;?j // Edge[i][j]=Edge[i][j+1]; //刪除所有指向第v個頂點的邊
// Vertices.Delete(v); //在頂點順序表中刪除第v個頂點
//}
/*?如果v1和v2有一個不是圖中的頂點,則圖不變;
*?如果v1和v2相等,則圖不變;
*?如果不是圖的邊,則圖不變;
*?如果是圖的邊,則在帶權有向圖G中刪除第v1個頂點指向第v2個頂點的有向邊。
*/
//void?AdjMWGraph::DeleteEdge(const?int?v1?const?int?v2)
////刪除一條起始頂點為v1、終止頂點為?v2的邊
//{
// switch?(IsEdge(v1v2))//判斷圖中第v1個頂點到第v2個頂點的邊的情況
// {
// case?-2: //如果v1和v2有一個不是圖中的頂點,則圖不變;
// break;
// case?-1: //如果v1和v2相等,則圖不變;
// break;
// case?0: //如果不是圖的邊,則圖不變;
// break;
// case?1: //如果是圖的邊,則在帶權有向圖G中刪除第v1個頂點指向第v2個頂點的有向邊。
// {
// Edge[v1][v2]?=?MaxWeight;/*把該邊的權值置為無窮大,即為刪除該邊*/
// numOfEdges--;
// }
// default:;
// }
//}
//返回第v個頂點的第一個鄰接頂點。若存在返回該鄰接頂點的下標序號,否則返回-1
int?AdjMWGraph::GetFirstNeighbor(const?int?v)const
{
if?(IsVertex(v)?==?0)//判斷序號v的合法性
{
// cout?<“參數v越界出錯!“?< exit(0);
}
/*尋找鄰接矩陣v行中從最左開始第一個值非零且非無窮大的權值對應的頂點*/
for?(int?co
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????16485??2016-11-29?00:52??羅馬尼亞度假問題\RomanTest\AdjMWGraph.cpp
?????文件???????3551??2016-11-29?00:52??羅馬尼亞度假問題\RomanTest\AdjMWGraph.h
?????文件???????4074??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\ReadMe.txt
????.......?????67777??2013-07-22?01:18??羅馬尼亞度假問題\RomanTest\res\RomanTest.ico
?????文件????????674??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\res\RomanTest.rc2
?????文件???????5100??2016-11-28?14:07??羅馬尼亞度假問題\RomanTest\resource.h
?????文件?????111520??2016-11-30?00:41??羅馬尼亞度假問題\RomanTest\RomanTest.aps
?????文件???????2413??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\RomanTest.cpp
?????文件????????475??2016-11-27?20:56??羅馬尼亞度假問題\RomanTest\RomanTest.h
?????文件??????15558??2016-11-30?00:41??羅馬尼亞度假問題\RomanTest\RomanTest.rc
?????文件???????6453??2016-11-27?22:38??羅馬尼亞度假問題\RomanTest\RomanTest.vcxproj
?????文件???????2434??2016-11-27?22:38??羅馬尼亞度假問題\RomanTest\RomanTest.vcxproj.filters
?????文件??????12184??2016-11-29?00:52??羅馬尼亞度假問題\RomanTest\RomanTestDlg.cpp
?????文件???????1540??2016-11-28?15:48??羅馬尼亞度假問題\RomanTest\RomanTestDlg.h
?????文件???????2074??2016-11-28?13:28??羅馬尼亞度假問題\RomanTest\SeqList.h
?????文件???????1498??2016-11-27?22:38??羅馬尼亞度假問題\RomanTest\SeqQueue.h
?????文件????????142??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\stdafx.cpp
?????文件???????1578??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\stdafx.h
?????文件????????234??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\targetver.h
?????文件????????316??2016-11-30?23:42??羅馬尼亞度假問題\RomanTest\啟發函數.txt
?????文件???????3816??2016-11-30?23:42??羅馬尼亞度假問題\RomanTest\圖數據.txt
?????文件????????973??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest.sln
????..A..H.?????35840??2016-11-30?22:41??羅馬尼亞度假問題\RomanTest.v12.suo
?????目錄??????????0??2016-11-27?09:46??羅馬尼亞度假問題\RomanTest\res
?????目錄??????????0??2016-11-30?23:49??羅馬尼亞度假問題\RomanTest
?????目錄??????????0??2016-11-30?23:51??羅馬尼亞度假問題
-----------?---------??----------?-----??----
???????????????296709????????????????????26
評論
共有 條評論