题目详情
当前位置:首页 > 计算机考试 > 中级软件设计师
题目详情:
发布时间:2023-10-22 01:33:04

[简答题]【说明】设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。本程序,输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。 程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如果这样,从站点x至站点y的最少上车次数便对应图G中从点x到点y的最短路径长度。而程序要求的换车次数就是上车次数减1。 #include <stdio.h> #define M 20 #define N 50 int a[N+1]; /*用于存放一条线路上的各站编号*/ int g[N][N]; /*严存储对应的邻接矩阵*/ int dist[N]; /*严存储站0到各站的最短路径*/ int m, n; void buildG( ) { int i, j, k, sc, dd printf(“输入公交线路数,公交站数/n”); scanf("%d%d",&m,&n); for (i=0;i<n;i++) /*邻接矩阵清0*/ for(j=0;j<n;j++) g[i][j]=0; for(i=0;i<m;i++) { printf("沿第%d条公交线路的各站编号(0<=编号<=%d,-1结束):/n)",i+1,n-1); sc=0; /* 当前线路站计数器*/ while(1) { scanf("%d",&dd); if(dd=-1)break; if(dd>=0 && dd<n) (1) ; } a[sc]=-1; for(k=1;a[k]>=0;k++) /*处理第i+1条公交线路*/ for(j=0;j<k;j++) g (2) =1; } } int minLen( ) { int j,k; for(j=0;j<n;j++) dist[j]=g[0][j]; d

更多"【说明】设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车"的相关试题:

[简答题]【说明】设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。本程序,输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。
程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如果这样,从站点x至站点y的最少上车次数便对应图G中从点x到点y的最短路径长度。而程序要求的换车次数就是上车次数减1。
#include <stdio.h>
#define M 20
#define N 50
int a[N+1]; /*用于存放一条线路上的各站编号*/
int g[N][N]; /*严存储对应的邻接矩阵*/
int dist[N]; /*严存储站0到各站的最短路径*/
int m, n;
void buildG( )
int i, j, k, sc, dd
printf(“输入公交线路数,公交站数/n”);
scanf("%d%d",&m,&n);
for (i=0;i<n;i++) /*邻接矩阵清0*/
for(j=0;j<n;j++)
g[i][j]=0;
for(i=0;i<m;i++)
printf("沿第%d条公交线路的各站编号(0<=编号<=%d,-1结束):/n)",i+1,n-1);
sc=0; /* 当前线路站计数器*/
while(1)
scanf("%d",&dd);
if(dd=-1)break;
if(dd>=0 && dd<n) (1)

a[sc]=-1;
for(k=1;a[k]>=0;k++) /*处理第i+1条公交线路*/
for(j=0;j<k;j++)
g (2) =1;
[简答题]【说明】 设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。 程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如是这样,从站点x至站点y的最少上车次数便对应图G中从点x至点y的最短路径长度。而程序要求的换车次数就是上车次数减1。 【函数5-9】 #include <stdio.h> #define M 20 #define N 50 int a[N+1]; /*用于存放一条线路上的各站编号*/ iht g[N][N]; /*存储对应的邻接矩阵*/ int dist[N]; /*存储站0到各站的最短路径*/ int m,n; void buildG( ) { int i,j,k,sc,dd; printf ("输入公交线路数,公交站数/n"); scanf("%d%d", &m, &n); for(i=0; i<n; i++) /*邻接矩阵清0*/ for(j = 0; j < n; j++)g[i][j] = 0; for(i=0; i<m; i++){ printf("沿第%d条公交车线路前进方向的各站编号(O<=编号<=%d,-1结束):/n", i+1, n-1); sc=0;/* 当前线路站计数器 */ while(1){ scanf("%d",&dd); if(dd==-1)break; if(dd>=0 && dd<n) (1) ; } a[sc]=-1; for(k=1;a[k]>=0; k++) /* 处理第i+1条公交线路 */ for(j=0; j<k; j++)
[填空题]

阅读下列说明和C代码,将应填入 (n) 处的字句。
[说明]
设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量wij和价格cij。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。
采用回溯法来求解该问题:
首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合1,2,…,m),将解空间用树形结构表示。
接着从根结点开始,以深度优先的方式搜索整个解空间。从根结点开始,根结点成为活结点,同时也成为当前的扩展结点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新结点。判断当前的机器价格(c11)是否超过上限(cc),重量(w11)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,根结点不再是扩展结点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新结点。同样判断当前的机器价格(c11+c21)是否超过上限(cc),重量(w11+w21)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活结点;若否,则该新结点成为活结点,同时也成为当前的扩展结点,原来的结点不再是扩展结点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活结点为止。
[C代码]
下面是该算法的C语言实现。
(1)变量说明
n:机器的部件数
m:供应商数
cc:价格上限
w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量
c[][]:二维数组,c[i]D]表示第j个供应商供应的第i个部件的价格
bestW:满足价格上限约束条件的最小机器重量
bestC://最小重量机器的价格
bestX[]:最优解,一

[判断题]大型客车、牵引车、城市公交车、中型客车、大型货车驾驶人应当每两年提交一次身体条件证明.
[判断题]持有大型客车、牵引车、城市公交车、中型客车、大型货车驾驶证的驾驶人联系电话、联系地址以及从业单位等信息发生变化的,应当在信息变更后三十日内,向驾驶证核发地车辆管理所备案。
[判断题]持有大型客车、牵引车、城市公交车、中型客车、大型货车驾驶证的驾驶人,应当在联系电话、联系地址以及从业单位等信息发生变化的,应当在信息变更后三十日内,向驾驶证核发地车辆管理所备案。

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码