首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填(n)处的字句写在对应栏内。 【说明】 本题将有向网(带权有向图)定义为类Adjacency WDigraph。类中的数据成员n表示有向网中的顶点数;a为带权邻接矩阵,用于存储有向网中每一对顶点间弧上的权值;c为二维
阅读以下说明和C++代码,将应填(n)处的字句写在对应栏内。 【说明】 本题将有向网(带权有向图)定义为类Adjacency WDigraph。类中的数据成员n表示有向网中的顶点数;a为带权邻接矩阵,用于存储有向网中每一对顶点间弧上的权值;c为二维
admin
2009-02-15
36
问题
阅读以下说明和C++代码,将应填(n)处的字句写在对应栏内。
【说明】
本题将有向网(带权有向图)定义为类Adjacency WDigraph。类中的数据成员n表示有向网中的顶点数;a为带权邻接矩阵,用于存储有向网中每一对顶点间弧上的权值;c为二维数组,存储有向网中每一对顶点间的最短路径长度;kay为二维数组,存储最短路径,kay
[j]=k表示顶点i到达顶点j的最短路径必须经过顶点k。类中的主要成员函数有:
Input():输入有向网的顶点数、各条弧及权值,建立带权领接矩阵a。若顶点i到顶点j有弧,则a
[j]取弧上的权值,否则a
[j]的值取NoEdge。
AllPairs();用弗洛伊德(Floyd)算法求有向网中每一对顶点间的最短路径长度。
OutShortestPath (int i, int j:计算顶点i到顶点j的最短路径。
outputPath(int i, int j):输出顶点i到顶点j的最短路径上的顶点。
Floyd算法的基本思想是递推地产生一个矩阵序列C0,C1,C2,…,Cn,其中C0是已知的带权邻接矩阵,a,Ck(i, j(0≤i,j<)表示从顶点i到顶点j的中间顶点序号不大于k的最短路径长度。如果i到j的路径没有中间顶点,则对于0≤k<n,有Ck(i,j)=C0(i,j)= a
[j]。递推地产生C1,C2,…,Cn的过程就是逐步将可能是最短路径上的顶点作为路径上的中间顶点进行试探,直到为全部路径都找遍了所有可能成为最短路径上的中间顶点,所有的最短路径也就全部求出,算法就此结束。
【C++代码】
#include < iostream. h >
#define NoEdge 10000// 当两个顶点之间没有边相连时,在邻接矩阵中用NoEdge表示
void Make2DArray(int * * &x, int rows, int cols);
class AdjacencyWDigraph {
private
int n; //有向网中的顶点数目
int* *a; //存储顶点间弧上的权值
int* *c; //存储计算出的最短路径长度
int* * kay; //存储求出的最短路径
pubic:
int Vertices( )const j return n;}
void AllPairs( );
void Input( ); //输入有向网的顶点数、各条弧及权值,建立邻接矩阵a
void OutShortestPath(int i, int j); //计算顶点i到j的最短路径(试卷中未列出)
~ AdjacencyWDigraph ( ); //析构函数(试卷中未列出)
private:
void outputPath(int i, int j);
};
void AdjacencyWDigraph: :AllPairs( )
int i,j,k,t1,t2,t3;
for(i=1;i<=n; k++)
for(j=1;j<=n; ++j)
{c
[j]=(1); kay
[j]=0;}
for(k=1;k<=n; k++)
for(i=1;i<=n; i++){
if(i= =k) continue;
t1=c
[k];
for(j=1;j<=n; j++){
if(j==k||j==i) continue;
t2 =c[k] [j]; t3 =c
[j];
if( t1 ! = NoEdge && t2! = NoEdge &&(t3==NoEdge || t1+t2<t3) )
{c
[j]=(2);kay
[j]=(3);}
}//for
}//for
void AdjacencyWDigraph:: outputPath(int i, int j)
{ //输出顶点i到j的最短路径上的顶点
if(i==j) return;
if(kay
[j]==0)cout<<j <<";
else { outputPath(i,(4)); outputPath((5));}
}
void Adjacency WDigraph: :lnput( )
{int i,j,u,v,w,E;
cout << "输入网中顶点个数:";cin> >n;
cout << "输入网中弧的个数:"; cin> >E;
Make2DArray (a, n+1, n+1);
for(i=1;i<=n; i++)
for(j=1; j<=n; j++) a
[j]=NoEdge;
for(i=1;i< =n; i++) a
=0;
Make2DArray(c, n+1, n+1);
Make2DArray(kay, n+1, n+1)
for(i=1;i<=E; i++){
cout<<"输入弧的信息(起点终点权值); "; cin> >u> >v> >w; a
[v] =w;
}
}
void Make2DArray(int * * &x, int rows, int cols)
{ int i,j;
x=new int* [rows+1];
for(i=0;i<rows+1;i ++ ) x
=new int [cols+1];
for(i=1;i<= rows; i ++)
for(j=1;j<=cols; j++) x
[j]=0;
选项
答案
(1)a[i][j](2)t1+t2,其中t1可以写成c[i][k],t2可以写成c[k][j] (3)k(4)kay[i][j](5)kay[i][j],j
解析
(1)此处的双层循环的作用是给数组c赋初值。即把最初的i号结点到j号结点的路径长度存入c。由题目中已经有说明:“Input ();输入有向图的顶点数、各条弧及权值,建立带权邻近矩阵a。若顶点 i到顶点j有弧,则a
[j]取弧上的权值,否则a
[j]的值取 NoEdge。”所以应填a
[j]。(2)首先应该说明的是此处的三层循环所完成的功能是用递推的方式,在i号结点和j号结点中插入一个k号结点,然后比较c
[j]与c
[k]+c[k][j],如果c
[k]+c[k][j]小于c
[j],则用c
[k]+c[k]代替c
。这里用到的原则就是:c
[k],c[k][j]分别是i到k,k到j的最短路径,若i到j要经过 k,则c
[k]+c[k]就是i到j过结点k的最短路径。(3)由于题目中提到“kay为二维数组,存储最短路径,kay
[j]=k表示顶点i到达顶点j的最短路径必须经过顶点k。”所以,应填k。(5)此处用到了程序的递归,其实这个过程很好理解,也就是判断当中间结点为0,表示i,j直接为最短路径,则直接打印即可。如果有中间结点k,则先打印从i到k的路径,再打印从k到j的路径。此处的中间结点存在kay
[j]里,所以 (4)填kay
[j]。
转载请注明原文地址:https://jikaoti.com/ti/Bwi7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
如果在程序中的多个地方需要使用同一个常数,那么最好将其定义为一个符号常量,这样______。
假设段页式存储管理系统中的地址结构如下图所示,则系统()。
单元测试的测试内容包括_____________。①模块接口②局部数据结构③模块内路径④边界条件⑤错误处理⑥系统性能
兼容性测试的测试范围包括___________。①硬件兼容性测试②软件兼容性测试③数据兼容性测试④平台兼容性测试
内存按字节编址从B3000H到DABFFH的区域其存储容量为____________。
一个程序的控制流图中有6个节点,10条边,在测试用例数最少的情况下,确保程序中每个可执行语句至少执行一次所需要的测试用例数的上限是______。
软件设计师王某在其公司的某一综合信息管理系统软件开发工作中承担了大部分程序设计工作。该系统交付用户,投入试运行后,王某辞职离开公司,并带走了该综合信息管理系统的源程序,拒不交还公司。王某认为,综合信息管理系统源程序是他独立完成的,他是综合信息管理系统源程序
在程序控制流图中,有8条边,6个节点,则控制流程图的环路复杂性V(G)等于(55)。
在程序执行过程中,Cache与主存的地址映像由()。
随机试题
目前最常采用的阴囊探测方法是()
易引起心动过缓,汗腺及唾液腺分泌过多的药物是:易产生低血压,便秘、口干的药物是:
将60%的司盘-80(HLB值4.3)和40%吐温-80(HLB值15)混合后HLB值为
流式细胞术检测细胞内细胞因子操作叙述不正确的是
患者男性,30岁。主诉昨晚与朋友喝完酒在家休息3小时后,发现双下肢无力,很快上肢乃至全身无力,当时神志清楚,大小便不受影响。7小时后躯体、上肢逐渐恢复正常,下肢也明显好转,10小时后全部恢复正常;2周前曾发生相同症状1次。急诊化验血钾为2.5mmol/L。
某校五年级(共3个班级)的学生排队,每排3人、5人或7人,最后一排都只有2人,这个学校五年级有几名学生?
根据增值税法律制度的规定,增值税一般纳税人的下列行为中涉及的进项税额,不得从销项税额中抵扣的是()(2013年)
夏启取得了对有扈氏的胜利,意味着夏王朝稳定了政权,站稳了脚跟的战役是()
企业信息化的基本内容包括基础层面、组织层面和(54)。
Cutoffbythestorm,theywereforcedto______foodforseveral.
最新回复
(
0
)