首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】[程序6说明]单源最短路径的分支限界算法。 const int MAXNUM=29999; #include<iostream> #include<vector> #include
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】[程序6说明]单源最短路径的分支限界算法。 const int MAXNUM=29999; #include<iostream> #include<vector> #include
admin
2009-02-15
54
问题
阅读下列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;cout<<"All vertices are:";
while(j!=source){cout<<j<<"->";j=p[j];}
cout<<source<<”.”<<end1;
} //打印顶点的最短路径长度和至源点的最短路径上经过的顶点序列
return;
}
选项
答案
(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)
定义最小化堆模板类MinNode<VertexType, 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])
定义最小化堆模板类MinNode<VertexType,EdgeType>的对象N(j,distance[j])。
转载请注明原文地址:https://kaotiyun.com/show/GgDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
函数f()、g()的定义如下所示,已知调用f时传递给其形参x的值是10,若以传值方式调用g,则函数f的返回值为__________。
对于一般的树结构,可以采用孩子.兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子一兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是_____。
验收测试的定义是(52)。
以下关于模块耦合关系的叙述中,耦合程度最低的是__________(39),其耦合类型为___________(40)耦合。(39)
某软盘有40个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,则读取一个100块的文件需要时间为(24)。
软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段的复审期间,应该从(8)出发;评价软件的结构和过程。
假设某公司营销系统有营销点关系S(营销点,负责人姓名,联系方式)、商品关系P(商品名,条形码,型号,产地,数量,价格),其中,营销点唯一标识S中的每一个元组。每个营销点可以销售多种商品,每一种商品可以由不同的营销点销售。关系S和P的主键分别为(15),S
某汽车维修公司有部门、员工和顾客等实体,各实体对应的关系模式如下:部门(部门代码,部门名称,电话)员工(员工代码,姓名,部门代码)顾客(顾客号,姓名,年龄,性别)维修(顾客号,故障情况,维修日期,员工代码)假设每个部门允许有多部电话,则电话属性为
在进行可用性测试时关注的问题应包括()。①安装过程是否困难②错误提示是否明确③GUI接口是否标准④登录是否方便⑤帮助文本是否上下文敏感
阅读以下说明和图,填补流程图中的空缺。【说明】某汽车制造工厂有两条装配线。汽车装配过程如图10-6所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。(1)e0和e1表示底盘分别进入装配线0和
随机试题
A、 B、 C、 D、 C
胎儿枕额径的平均值是:
资产的特征是()。
()不能说明求助者的心理问题的复杂程度较大。
道德品质形成和转化的前提与基础是()。
儿童的前言语阶段,是一个在语言获得过程中的()核心期。
对有违法犯罪嫌疑的人,需要继续盘问的,在特殊情况下,经县级以上公安机关批准,可以将继续盘问时间延长至()小时。
U.SjeansmakerLeviStrauss&Co.denieditwasplayingonconsumerfearsbylaunchingalineoftrousersfittedwith"anti-
当前建立和完善社会保障体系首先要坚持完善下列“保障线”制度()
ChooseFOURletters,A-G.Writethecorrectlettersinboxes6-9onyouranswersheet.WhichFOURusesarelistedforbi
最新回复
(
0
)