早教吧作业答案频道 -->其他-->
急求~~~公司想算出一张任意两个城市之间的最廉航价路线表.试作出这样的表来.Dijkstra算法某公司在六个城市C1,C2,…,C6中都有分公司,从Ci到Cj的直接航程票价由下述矩阵的第(i,j)元素给出(
题目详情
急求~~~公司想算出一张任意两个城市之间的最廉航价路线表. 试作出这样的表来.
Dijkstra算法某公司在六个城市C1, C2, …, C6中都有分公司,从Ci到Cj的直接航程票价由下述矩阵的第(i, j)元素给出(∞表示无直接航路):
0 50 ∞ 40 25 10
50 0 15 20 ∞ 25
∞ 15 0 10 20 ∞
40 20 10 0 10 25
25 ∞ 20 10 0 55
10 25 ∞ 25 55 0
该 公司想算出一张任意两个城市之间的最廉航价路线表. 试作出这样的表来.
结果就行!
Dijkstra算法某公司在六个城市C1, C2, …, C6中都有分公司,从Ci到Cj的直接航程票价由下述矩阵的第(i, j)元素给出(∞表示无直接航路):
0 50 ∞ 40 25 10
50 0 15 20 ∞ 25
∞ 15 0 10 20 ∞
40 20 10 0 10 25
25 ∞ 20 10 0 55
10 25 ∞ 25 55 0
该 公司想算出一张任意两个城市之间的最廉航价路线表. 试作出这样的表来.
结果就行!
▼优质解答
答案和解析
C1-->C1:0
C1
C1-->C2:35
C1->C6->C2
C1-->C3:45
C1->C5->C3
C1-->C4:35
C1->C6->C4
C1-->C5:25
C1->C5
C1-->C6:10
C1->C6
C2-->C1:35
C2->C6->C1
C2-->C2:0
C2
C2-->C3:15
C2->C3
C2-->C4:20
C2->C4
C2-->C5:30
C2->C4->C5
C2-->C6:25
C2->C6
C3-->C1:45
C3->C5->C1
C3-->C2:15
C3->C2
C3-->C3:0
C3
C3-->C4:10
C3->C4
C3-->C5:20
C3->C5
C3-->C6:35
C3->C4->C6
C4-->C1:35
C4->C5->C1
C4-->C2:20
C4->C2
C4-->C3:10
C4->C3
C4-->C4:0
C4
C4-->C5:10
C4->C5
C4-->C6:25
C4->C6
C5-->C1:25
C5->C1
C5-->C2:30
C5->C4->C2
C5-->C3:20
C5->C3
C5-->C4:10
C5->C4
C5-->C5:0
C5
C5-->C6:35
C5->C4->C6
C6-->C1:10
C6->C1
C6-->C2:25
C6->C2
C6-->C3:35
C6->C4->C3
C6-->C4:25
C6->C4
C6-->C5:35
C6->C1->C5
C6-->C6:0
C6
这题是用程序写的,C++的程序附在下面
#include
int i,j,k,l,min,s;
int a[7],f[7],p[7],ans[7];
int g[7][7];
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
for(i=1;i<7;++i)
for(j=1;j<7;++j)scanf("%d",&g[i][j]);
for(i=1;i<7;++i)
{
for(j=1;j<7;++j)
{
a[j]=1000000;
p[j]=0;
f[j]=0;
}
a[i]=0;
for(j=1;j<7;++j)
{
min=1000000;
for(k=1;k<7;++k)
if((!p[k])&&(a[k] {
min=a[k];
l=k;
}
p[l]=1;
for(k=1;k<7;++k)
if(a[k]>a[l]+g[l][k])
{
a[k]=a[l]+g[l][k];
f[k]=l;
}
}
for(j=1;j<7;++j)
{
printf("C%d-->C%d:%d\n",i,j,a[j]);
printf("C%d",i);
s=0;
k=j;
for(;k;k=f[k])ans[++s]=k;
for(--s;s;--s)printf("->C%d",ans[s]);
printf("\n");
printf("\n");
}
}
return 0;
}
C1
C1-->C2:35
C1->C6->C2
C1-->C3:45
C1->C5->C3
C1-->C4:35
C1->C6->C4
C1-->C5:25
C1->C5
C1-->C6:10
C1->C6
C2-->C1:35
C2->C6->C1
C2-->C2:0
C2
C2-->C3:15
C2->C3
C2-->C4:20
C2->C4
C2-->C5:30
C2->C4->C5
C2-->C6:25
C2->C6
C3-->C1:45
C3->C5->C1
C3-->C2:15
C3->C2
C3-->C3:0
C3
C3-->C4:10
C3->C4
C3-->C5:20
C3->C5
C3-->C6:35
C3->C4->C6
C4-->C1:35
C4->C5->C1
C4-->C2:20
C4->C2
C4-->C3:10
C4->C3
C4-->C4:0
C4
C4-->C5:10
C4->C5
C4-->C6:25
C4->C6
C5-->C1:25
C5->C1
C5-->C2:30
C5->C4->C2
C5-->C3:20
C5->C3
C5-->C4:10
C5->C4
C5-->C5:0
C5
C5-->C6:35
C5->C4->C6
C6-->C1:10
C6->C1
C6-->C2:25
C6->C2
C6-->C3:35
C6->C4->C3
C6-->C4:25
C6->C4
C6-->C5:35
C6->C1->C5
C6-->C6:0
C6
这题是用程序写的,C++的程序附在下面
#include
int i,j,k,l,min,s;
int a[7],f[7],p[7],ans[7];
int g[7][7];
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
for(i=1;i<7;++i)
for(j=1;j<7;++j)scanf("%d",&g[i][j]);
for(i=1;i<7;++i)
{
for(j=1;j<7;++j)
{
a[j]=1000000;
p[j]=0;
f[j]=0;
}
a[i]=0;
for(j=1;j<7;++j)
{
min=1000000;
for(k=1;k<7;++k)
if((!p[k])&&(a[k]
min=a[k];
l=k;
}
p[l]=1;
for(k=1;k<7;++k)
if(a[k]>a[l]+g[l][k])
{
a[k]=a[l]+g[l][k];
f[k]=l;
}
}
for(j=1;j<7;++j)
{
printf("C%d-->C%d:%d\n",i,j,a[j]);
printf("C%d",i);
s=0;
k=j;
for(;k;k=f[k])ans[++s]=k;
for(--s;s;--s)printf("->C%d",ans[s]);
printf("\n");
printf("\n");
}
}
return 0;
}
看了 急求~~~公司想算出一张任意...的网友还看了以下:
两船从某岛同时出发,航行方向成六十度角,设甲船速度为15KM/h,乙船速度为10km/h,求航行3 2020-06-02 …
航母正以10m/s速度沿直线正常巡航.某舰载机从航母后甲板沿航母航行方向以50m/s速度上舰,在阻 2020-06-18 …
航母正以10m/s速度沿直线正常巡航.某舰载机从航母后甲板沿航母航行方向以50m/s速度上舰,在阻 2020-07-04 …
急急该公司想算出一张任意两个城市之间的最廉航价路线表.试作出这样的表来Dijkstra算法某公司在 2020-07-04 …
急求~~~公司想算出一张任意两个城市之间的最廉航价路线表.试作出这样的表来.Dijkstra算法某 2020-07-04 …
一船沿北偏东50度的方向离开A港直线航行,航行50nmile到C处后,改变方向像东航又走了40nm 2020-07-13 …
五羊航空公司在六座城市之间开辟直达航线,为了保证做大,任选三座城市,都至少有其中两座彼此之间有直达航 2020-11-18 …
2014年3月30日,南航新疆分公司开通了伊宁-乌鲁木齐-南京援疆航线,这是南航开通的第二条伊宁直达 2020-11-21 …
2014年3月30日起,南航新疆分公司开通了伊宁-乌鲁木齐-南京援疆航线,这是南航开通的第二条伊宁直 2020-12-05 …
从2010年10月1日起,中国海军第六批编队调整护航航线,将亚丁湾东口商船集结点向东延伸170多海里 2020-12-07 …