北邮通信网编程作业Word文档下载推荐.docx

上传人:b****5 文档编号:21558643 上传时间:2023-01-31 格式:DOCX 页数:14 大小:253.31KB
下载 相关 举报
北邮通信网编程作业Word文档下载推荐.docx_第1页
第1页 / 共14页
北邮通信网编程作业Word文档下载推荐.docx_第2页
第2页 / 共14页
北邮通信网编程作业Word文档下载推荐.docx_第3页
第3页 / 共14页
北邮通信网编程作业Word文档下载推荐.docx_第4页
第4页 / 共14页
北邮通信网编程作业Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

北邮通信网编程作业Word文档下载推荐.docx

《北邮通信网编程作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《北邮通信网编程作业Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

北邮通信网编程作业Word文档下载推荐.docx

24.cout<

25.if(k==y-1)

26.{

27.cout<

28.}

29.}

30.}

31.

32.}

33.

34.voidmain()

35.{

36.intV;

//V为图中顶点数

37.cout<

请输入图中矩阵顶点个数:

"

38.cin>

>

V;

39.cout<

生成的图中顶点个数为:

V<

40.

41.float**w;

//w为一个二维float数组,储存权值

42.w=newfloat*[V];

//创建行指针

43.for(inti=0;

i<

i++)

44.{

45.w[i]=newfloat[V];

46.}

47.

48.ints=0;

//用于检测矩阵是否输入正确

49.do

50.{

51.cout<

<

请输入距离矩阵(无边用100代替):

52.for(intm=0;

m++)//距离矩阵初始化

53.{

54.for(intk=0;

55.{

56.cin>

w[m][k];

57.}

58.}

59.cout<

距离矩阵如下:

60.showMatrix(w,V);

61.

62.cout<

上述距离矩阵输入正确按1,重新输入按0"

63.cin>

s;

64.

65.}while(s==0);

//正确输入初始化距离矩阵

66.

67.int**r;

//r为一个二维int数组,储存路由

68.r=newint*[V];

//创建行指针

69.for(inti=0;

70.{

71.r[i]=newint[V];

72.}

73.for(intm=0;

m++)//路由矩阵初始化

74.{

75.for(intk=0;

76.{

77.if(w[m][k]==0)

78.r[m][k]=0;

79.else

80.r[m][k]=k+1;

81.}

82.}

83.cout<

初始化的路由矩阵为"

84.showMatrix(r,V);

85.

86.

87.//初始化完成,下面开始进行Floyd算法迭代

88.for(intl=0;

l<

l++)

89.{

90.for(intm=0;

91.{

92.for(intk=0;

93.{

94.if(w[m][l]+w[l][k]<

w[m][k])

95.{

96.w[m][k]=w[m][l]+w[l][k];

97.r[m][k]=r[m][l];

98.}

99.

100.}

101.}

102.cout<

第"

l+1<

次迭代结果中w为"

103.showMatrix(w,V);

104.cout<

次迭代结果中r为"

105.showMatrix(r,V);

106.

107.}

108.cout<

Floyd迭代完成。

109.

110.intmidpoint=0;

//代表中点的顶点标号

111.intcentral=0;

//代表中心的顶点标号

112.float*max=newfloat[V];

//代表每个端点i的max{w[i][j]}

113.float*sum=newfloat[V];

//代表每个端点i的w[i][j]之和

114.for(intm=0;

m++)//初始化动态数组

115.{

116.sum[m]=0;

117.max[m]=0;

118.}

119.

120.for(intm=0;

m<

V;

m++)

121.{

122.for(intk=0;

k<

123.{

124.sum[m]=sum[m]+w[m][k];

//记录以m为端点的边权值之和

125.if(w[m][k]>

max[m])

126.max[m]=w[m][k];

//记录以m为端点的边的最大权值

127.}

128.

129.}

130.cout<

各端点的最大边权值分别为:

131.for(intm=0;

132.{

133.cout<

max[m]<

134.}

135.cout<

各端点的边权值之和分别为:

136.for(intm=0;

137.{

138.cout<

sum[m]<

139.}

140.

141.floatminSum=sum[0];

//以第一个顶点为最小值进行初始化

142.floatminMax=max[0];

143.for(intm=1;

144.{

145.if(sum[m]<

minSum)//顶点m边权值之和比最小值小,将m记为最小值

146.{

147.minSum=sum[m];

148.midpoint=m;

149.}

150.if(max[m]<

minMax)//顶点m最大边权值比最小值小,将m记为最小值

151.{

152.minMax=max[m];

153.central=m;

154.}

155.}

156.cout<

图的中心为V"

central+1<

,中点为V"

midpoint+1<

157.

158.cout<

进行最短路径规划输入1,不进行输入0:

159.cin>

s;

//用于判断是否进行路径规划

160.while(s==1)

161.{

162.intstart,end,middle;

163.cout<

请输入路径起点:

;

164.cin>

start;

165.cout<

请输入路径终点:

166.cin>

end;

167.cout<

从V"

start<

至V"

end<

的最短路径为:

168.<

V"

169.do

170.{

171.middle=r[start-1][end-1];

172.cout<

->

middle;

173.start=middle;

174.}while(middle!

=end);

175.cout<

继续进行最短路径规划输入1,不进行输入0:

176.cin>

//用于判断是否进行路径规划

177.}

178.delete[]w,r,sum,max;

179.}

实验测试结果如下:

2.图的连通性判断

1.#include<

3.

4.voidDFS(int**c,intm,intn,int*b)

5.//c为矩阵,m为遍历起点,n为顶点个数,b为顶点遍历情况

7.for(intx=0;

x<

n;

x++)

8.{

9.if(c[m][x]==1)

10.{

11.if(b[x]==0)

12.{

13.cout<

x+1;

//输出遍历端点号

14.b[x]=1;

//端点设为已遍历

15.DFS(c,x,n,b);

16.}

17.}

18.}

19.}

20.

21.voidmain()

22.{

23.intV;

24.cout<

请输入顶点个数:

25.cin>

26.int**C;

27.C=newint*[V];

//二维动态数组存储邻接矩阵

28.for(inti=0;

29.{

30.C[i]=newint[V];

31.}

32.ints=0;

33.do

34.{

35.cout<

请输入邻接矩阵(无边为0,有边为1):

36.for(intm=0;

m++)//邻接矩阵初始化

37.{

38.for(intk=0;

39.{

40.cin>

C[m][k];

41.}

42.}

43.cout<

邻接矩阵如下:

44.for(intm=0;

45.{

46.for(intk=0;

47.{

48.cout<

C[m][k]<

49.if(k==V-1)

50.{

51.cout<

52.}

53.}

54.}

55.

56.cout<

上述邻接矩阵输入正确按1,重新输入按0"

57.cin>

58.

59.}while(s==0);

//正确输入初始化距离矩阵

60.

61.int*a=newint[V];

//初始化各顶点遍历情况

62.for(inti=0;

i++)

63.{

64.a[i]=0;

65.}

67.intU=0;

//从第U个节点开始遍历

68.cout<

\n请输入从开始遍历的顶点号:

69.cin>

U;

70.inti=U-1;

//第U个节点对应a[U-1]

71.a[i]=1;

//标记第U个节点为已遍历

72.cout<

\n遍历的次序为:

\nV"

i+1;

73.

74.DFS(C,i,V,a);

75.

76.cout<

以第一个顶点为起点进行遍历,各节点遍历情况为:

(被遍历为1,不被遍历为0)"

77.<

78.intsum=0;

79.for(intx=0;

80.{

81.cout<

a[x]<

82.sum=sum+a[x];

83.}

84.if(sum!

=V)

85.cout<

\n存在不被遍历的点,该图不连通"

86.else

87.cout<

所有点均被遍历,该图为连通图"

\n\n"

88.

89.delete[]C,a;

90.}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1