java求最短路径问题 图_java实现地图最短路径问题.doc

本文介绍如何使用Java编程解决地图上两个城市间的最短路径问题。通过创建Way类表示城市路线,使用HashMap存储城市路线,遍历并计算最短时间。提供addRoute方法添加城市之间的双向路线,并实现run方法寻找从给定起点到终点的最短路径。
摘要由CSDN通过智能技术生成

java实现地图最短路径问题.doc

b7530395547fbf8cb4b7259efdae862f.gif

还剩

4页未读,

继续阅读

下载文档到电脑,马上远离加班熬夜!

亲,喜欢就下载吧,价低环保!

内容要点:

编辑:civvy 第 1 页 2016-5-24用 JAVA 实现地图最短路径问题如图,是一个简单的模拟城市路线地图,那么如何编写程序实现:给出任意两个城市,算出用时最短的路线呢?京沪圳汉渝乌26 26 京 京 京 京 京 京 10 京 京 京 京 京 7 京 京 京 京 京 18 京 京 京 京 京 5 京 京 京 京 京 3 京 京 京 京 京 注:图中黑点代表城市,数字代表往返两城市间所需的时间JAVA 实现代码如下:public class MyMap {/* ---城市路线对象--- */public class Way {String from;String to;int cost;}Map map = new HashMap();// 储存所有城市路线List reachedWay = new ArrayList();// 储存到达目的地所经过的城市Map routeMap = new HashMap();// 储存到达目的地所经过的城市和所用的时间,key为时间,value 为reachedWay// int shortestTime=0; //储存最短时间,用于只输出最短路径的情况/* ---添加路线,双向添加--- */public void addRoute(String city1, String city2, int cost) {编辑:civvy 第 2 页 2016-5-24List cityList1 = (List) map.get(city1);// 城市1路线集合if (cityList1 == null) {cityList1 = new ArrayList();map.put(city1, cityList1);}Way way1 = new Way();way1.from = city1;way1.to = city2;way1.cost = cost;/* ---不存在该路线,则添加--- */if (!cityList1.contains(way1)) {cityList1.add(way1);}List cityList2 = (List) map.get(city2);// 城市2路线集合if (cityList2 == null) {cityList2 = new ArrayList();map.put(city2, cityList2);}Way way2 = new Way();way2.from = city2;way2.to = city1;way2.cost = cost;/* ---不存在该路线,则添加--- */if (!cityList2.contains(way2)) {cityList2.add(way2);}}/*---计算最短路径、最短时间---*/public void run(String from, String to) {int tempTime = 0;// 储存所花时间的临时变量if (reachedWay.contains(from)) {// 走过的不走return;}reachedWay.add(from);// 把经过的城市加入到城市集合中if (reachedWay.size() > 1) {/* ---计算所花时间--- */List initList = (List) map.get(reachedWay.get(0));for (int j = 0; j shortestTime){// return;// }}}for (int i = 1; i shortestTime){// return;// }}}}}}/*---到达---*/if (f

发表评论

暂无评论,赶快抢占沙发吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值