• 大小: 146KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: 罗马尼亚  

资源简介

人工智能课设 罗马尼亚度假问题 MFC实现

资源截图

代码片段和文件信息

#include “AdjMWGraph.h“

AdjMWGraph::AdjMWGraph(const int sz) : Vertices(sz)
//构造函数
{
for (int i = 0; i < sz; i++)
for (int j = 0; j < sz; 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越界出错!“ << endl;
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越界出错!“ << endl;
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 < NumOfVertices(); i++)
// { for(j = 0; j < NumOfVertices(); j++)
// if((i == v || j == v) && i != j && Edge[i][j] > 0 &&Edge[i][j] < MaxWeight)
// 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越界出错!“ << endl;
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


评论

共有 条评论