早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。【说明】[程序6说明]单源最短路径的

题目

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】[程序6说明]单源最短路径的分支限界算法。

const int MAXNUM=29999;

include<iostream>

include<vector>

include<algorithm>

include<functional>

using namespace std;

template <class VertexType,class EdgeType>

class MinNode { //程序中使用的最小化堆的结点说明

friend class Graph<VertexType,EdgeType>

public:

MinNode (int nl, EdgeType length1)

{ VexNum=nl;

length=length1;

}

bool operator>(const MinNode<VertexType,EdgeType>&p)const

{ return (1)>p.length;

}

private:

int VexNum;

//记录源点序号,序号数组p及distance下标相一致。源点为初始扩展顶点

EdgeType length;

//记录源点到本顶点的当前最短路径的长度,源点到自身的长度为0

}

template<class VertexType,classEdgeType>

void Graph<VertexType,EdgeType>:: shortestpath(VertexType start) {

int j,k,source;//source 记录源点的序号。

EdgeType*distance=(2);

int*p=new int[MaxNumVertex];

vector<MinNode<VertexType,EdgeType> >H;

for(source=0;source<MaxNumVertex;source++)

{ if(NodeList[source]==start)break;}

if (source>=MaxNumVertex){cout<<”This is error!”<<end1;return;}

MinNode<VertexType,Edge Type>(3);

for(k=0;k<MaxNumVertex;k++)

{ distance[k]:MAXXUM; //记录源点到本顶点k的最终的最短路径的长度

p[k]=source; //记录最短路径上的本顶点的直接前驱顶点的序号

}

distance[source]=0;p[source]=-1;//m 是源点,前一顶点不存在

vector<MinNode<VertexType, EdgeType>>::iterator q;

while(1){

for(j=0;j<MaxNumVertex;j++)

if((AdjMatrix[E.VexNum* MaxNumVertex+j]<MAXNUM)

&&((4)<distance[j]))

{ distance[j]=E.length+AdjMatrix[E.VexNum* MaxNumVertex+j];

p[j]=E. VexNum; //记录顶点j的前一顶点

MinNode<VertexType, EdgeType>(5);

H.push_ back(N);

push_heap(H. begin(),H.end(),greater<MinNode<VertexType,

EdgeType>>());

}

if(H.empty()=true)break; //若优先队列为空,那么算法结束

else{

pop_ heap(H.begin(),H. end(),greater<MinNode<VertexType,

EdgeType>>());

q=H.end()-1; //从最小化堆中取路径最短的顶点

E=*q;

H.pop_ back(); //删除从最小化堆中“挤”出的顶点

}

} //end while

for(k=0;k<MaxNumVertex;k++){

cout<<"Shorstest path from vertex"<<k<<"is"<<distance[k]<<end1;

j=k;cou

参考答案
正确答案:(1)this->length或(*this).length (2)new EdgeType[MaxNumVertex] (3)E(source0) (4)E.length+ AdjMatrix [E. VcxNum* MaxNumVertex+j] (5)N(jdistance[j])
(1)this->length或(*this).length (2)new EdgeType[MaxNumVertex] (3)E(source,0) (4)E.length+ AdjMatrix [E. VcxNum* MaxNumVertex+j] (5)N(j,distance[j]) 解析:(1)this->length或(*this).length
操作符,的成员函数,比较两个对象的最短路径的长度length,大于则返回真(1)。
(2)new EdgeType[MaxNumVertex]
动态申请EdgeType类的对象数组distance,长度为MaxNumVertex,存放最短路径的长度。
(3)E(source,0)
定义最小化堆模板类MinNodeVertexType, EdgeType>的对象E(source,0)。
(4)E.length+ AdjMatrix [E. VcxNum* MaxNumVertex+j]
若E.length+ AdjMatrix [E.VexNum*MaxNumVertex+j]小于distance[j],则distance[j]取这个更小值。
(5)N(j,distance[j])
定义最小化堆模板类MinNodeVertexType,EdgeType>的对象N(j,distance[j])。
看了阅读下列C++程序和程序说明,...的网友还看了以下:

贫困生助学金申请表 收入来源一栏怎么填比如 务农的收入 打工的收入 职工的收入等 其他 2020-05-13 …

英语翻译"馆内禁止吸烟""请勿携带食品和饮料进馆'"请勿照相""请衣着整齐,穿拖鞋者不得入内" 也 英语 2020-05-15 …

识读工艺流程图的先后次序为( )A.工艺流程,标题栏,流程简述B.标题栏,工艺流程,流程简述C.标题 职业技能鉴定 2020-05-31 …

在“主题探究学习:新闻”综合性学习中,班上要主办一期新闻小报。成下面任务。小题1:为新闻小报设计三 语文 2020-06-19 …

英语翻译中译英珠海港高栏港区15万吨级干散货码头工程、高栏港南水作业区弃土岸壁工程开工典礼 数学 2020-06-22 …

“上善若水”,水是生命的源泉,2010年上海世博会吉祥物的主形态是水,它的颜色是海一样的蓝色,表明 政治 2020-06-26 …

阅读下文,完成下列各题。秋夜小洞庭离宴序唐苏源明①源明□东平太守征国子司业①,须昌外尉袁广载酒□回 语文 2020-07-16 …

关于线粒体的起源有多种观点,其中“内共生起源”学说(如图所示)已被越来越多的人所接受.下列说法不正确 语文 2020-11-22 …

在社会主义现代化建设过程中,“四个全面”战略布局逐步形成(图),这一过程说明()①实践是认识的来源和 政治 2021-01-01 …

材料一中国城镇的历史源远流长。但从古代型向近代型转换,明代是一个关键性的变革过程。明代城镇的勃兴,始 历史 2021-01-17 …