某地区共有19个村庄,各村庄之间的距离(单位为km) 如图所示,图中每条连线表示有公路相连.现要沿公路铺设天燃气管道.铺
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/06/28 04:43:11
某地区共有19个村庄,各村庄之间的距离(单位为km) 如图所示,图中每条连线表示有公路相连.现要沿公路铺设天燃气管道.铺设管道的人工和其他动力费用为1万元/km,材料费用为2万元/km.
(1):如果每个村庄均通天燃气,应如何铺设管道,才使总的铺设费用最少?
(2):天燃气公司决定在铺设管道前,派人先查看所有公路的状况,以便决定该公路是否可用.他们从村庄1出发,最后又回到村庄1.问他们应如何走,才使走的总路程最少?
![](http://img.wesiedu.com/upload/f/31/f31c8043d39710003f77f021dbc06c44.jpg)
(1):如果每个村庄均通天燃气,应如何铺设管道,才使总的铺设费用最少?
(2):天燃气公司决定在铺设管道前,派人先查看所有公路的状况,以便决定该公路是否可用.他们从村庄1出发,最后又回到村庄1.问他们应如何走,才使走的总路程最少?
![](http://img.wesiedu.com/upload/f/31/f31c8043d39710003f77f021dbc06c44.jpg)
![某地区共有19个村庄,各村庄之间的距离(单位为km) 如图所示,图中每条连线表示有公路相连.现要沿公路铺设天燃气管道.铺](/uploads/image/z/17558589-21-9.jpg?t=%E6%9F%90%E5%9C%B0%E5%8C%BA%E5%85%B1%E6%9C%8919%E4%B8%AA%E6%9D%91%E5%BA%84%2C%E5%90%84%E6%9D%91%E5%BA%84%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%28%E5%8D%95%E4%BD%8D%E4%B8%BAkm%29+%E5%A6%82%E5%9B%BE%E6%89%80%E7%A4%BA%2C%E5%9B%BE%E4%B8%AD%E6%AF%8F%E6%9D%A1%E8%BF%9E%E7%BA%BF%E8%A1%A8%E7%A4%BA%E6%9C%89%E5%85%AC%E8%B7%AF%E7%9B%B8%E8%BF%9E.%E7%8E%B0%E8%A6%81%E6%B2%BF%E5%85%AC%E8%B7%AF%E9%93%BA%E8%AE%BE%E5%A4%A9%E7%87%83%E6%B0%94%E7%AE%A1%E9%81%93.%E9%93%BA)
所需变量:
建立两个结构体:
struct GONGLU{
int id_lu;//公路编号
int length;//公路的长
int id_cun;//与该公路相邻的一个村庄,为什么是一个呢?看下面
};
struct CUNZHUANG{
int id_cun;//该村庄的编号
int n;//与该村相邻的村的个数
GONGLU plu1;//与该村相邻的村的公路,
GONGLU plu2;//以及那一端的村庄.
GONGLU plu3;//第三个
GONGLU plu4;//第四个
GONGLU plu5;//好像最多五个吧
}
然后当然就是:
CUNZHUANG cun[19];
接下来就是
int arrived_cun[19];//记录路过的次数
int arrived_lu[19];
int path[40];//记录路径,路径可能重复,所以接下来还要一个变量
int repeat=0;//记录最大允许重复的次数
int best[40];//用来记录最佳路径
long money;//记录所需money;
算法:
输入输出就不废话了
寻找路径就用递归地遍历吧
基本算法是差不多的
大概是这样的:
begin
计算总共经过的村庄(公路)的次数是否大于 19+repeat
是则与最佳路径比较,否则继续
依次遍历当前村庄所连的所有公路
end
如果一次没有找出来,就:
repeat++;
然后再递归一次
建立两个结构体:
struct GONGLU{
int id_lu;//公路编号
int length;//公路的长
int id_cun;//与该公路相邻的一个村庄,为什么是一个呢?看下面
};
struct CUNZHUANG{
int id_cun;//该村庄的编号
int n;//与该村相邻的村的个数
GONGLU plu1;//与该村相邻的村的公路,
GONGLU plu2;//以及那一端的村庄.
GONGLU plu3;//第三个
GONGLU plu4;//第四个
GONGLU plu5;//好像最多五个吧
}
然后当然就是:
CUNZHUANG cun[19];
接下来就是
int arrived_cun[19];//记录路过的次数
int arrived_lu[19];
int path[40];//记录路径,路径可能重复,所以接下来还要一个变量
int repeat=0;//记录最大允许重复的次数
int best[40];//用来记录最佳路径
long money;//记录所需money;
算法:
输入输出就不废话了
寻找路径就用递归地遍历吧
基本算法是差不多的
大概是这样的:
begin
计算总共经过的村庄(公路)的次数是否大于 19+repeat
是则与最佳路径比较,否则继续
依次遍历当前村庄所连的所有公路
end
如果一次没有找出来,就:
repeat++;
然后再递归一次
如图,A,B是笔直公路l同侧的两个村庄,且两个村庄到公路l的距离分别是3km和5km,两村庄之间的距离为d
AB是公路L旁的两个村庄(L为东西走向)村庄A到公路L之间的距离AC=1km,村庄B到公路L之间的距离BD=2km
如图,A,B是公路l(l为东西走向)两旁的两个村庄,村庄A到公路l的距离AC=1km,村庄B到公路l的距离BD=2km,
如图所示,在一条笔直的公路上有7个村庄,其中A、B、C、D、E、F离城市的距离分别为4,10,15,17,19,20km
如图A、B是笔直公路同侧的两个村庄,且两个村庄到公路的距离分别是300m和500m,两村庄到公路的投影之间的距离为600
如图A、B是笔直公路L同侧的两个村庄,且两个村庄到公路的距离分别是300m和500m,两村庄到公路的投影之间的距离为60
如图,A,B是笔直公路l同侧的两个村庄,且两个村庄到公路的距离分别是300m和500m,两村庄之间的距离为d(已知d2=
初二勾股定理应用如图A、B是笔直公路L同侧的两个村庄,且两个村庄到公路的距离分别是300m和500m,两村庄之间的距离为
有10个村庄,坐落在从县城出发的一条公路上,相邻的距离为10km,现在准备沿路安装水管,
如图所示,三个村庄A、B、C之间的距离分别为AB=5km,BC=12km,AC=13km,要从B修一条公路BD直达AC,
如图,三个村庄A,B,C,之间的距离分别为AB=5KM,AC=13KM,要从B修一条公路BD直达AC,已知公路的造价为2
公路上A B两站相距25km,C D为两个村庄,C D两村到公路的距离分别是10km和15km,现要在公路A B两站之间