主题:[讨论]天燃气管道铺设问题(急啊)
tgbtgb
[专家分:490] 发布于 2009-04-29 14:22:00
某地区共有19个村庄, 各村庄之间的距离(单位为km) 如图所示, 图中每条连线表示有公路相连. 现要沿公路铺设天燃气管道. 铺设管道的人工和其他动力费用为1万元/km, 材料费用为2万元/km.
(1): 如果每个村庄均通天燃气, 应如何铺设管道, 才使总的铺设费用最少?
(2): 天燃气公司决定在铺设管道前, 派人先查看所有公路的状况, 以便决定该公路是否可用. 他们从村庄1出发, 最后又回到村庄1. 问他们应如何走, 才使走的总路程最少?
(3): 某检修员从村庄1出发, 到每个村庄检查天燃气状况, 最后又回到村庄1. 他应如何走, 才使走的总路程最少?
这个地图(村庄的分布就在上传的文件里面),急啊 ,希望那位快点帮帮我,编程,C或C++或JAVA都可以。
回复列表 (共8个回复)
沙发
tgbtgb [专家分:490] 发布于 2009-04-29 14:24:00
这个好像要用什么最小支撑树的,但我不会啊 ,给位帮帮忙啊
板凳
糊涂大虫 [专家分:580] 发布于 2009-04-29 22:02:00
运筹学的问题。
3 楼
Jiagleo [专家分:50] 发布于 2009-04-29 23:09:00
LZ,你说很急?这种题目可不是一会能编出来的呀。
很抱歉我没有精力呀,在此只说一说想法吧。
1.所需变量:
建立两个结构体:
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;
4 楼
Jiagleo [专家分:50] 发布于 2009-04-29 23:09:00
2.算法:
输入输出我就不废话了
寻找路径就用递归地遍历吧
各个小题都有不同要求,但基本算法是差不多的
大概是这样的:
begin
计算总共经过的村庄(公路)的次数是否大于 19+repeat
是则与最佳路径比较,否则继续
依次遍历当前村庄所连的所有公路
end
如果一次没有找出来,就:
repeat++;
然后再递归一次
OK,小弟献丑了,希望能给你一些帮助。
5 楼
tgbtgb [专家分:490] 发布于 2009-04-30 15:15:00
还有吗?就这两天要用
6 楼
tgbtgb [专家分:490] 发布于 2009-04-30 15:17:00
谢谢你啊,我自己根据你的再看看。
7 楼
tgbtgb [专家分:490] 发布于 2009-04-30 15:18:00
要是能在5月3号前写个就更好了
8 楼
moke9 [专家分:30] 发布于 2010-09-02 07:41:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复