数据

武大,地大,6
武大,光谷,11
武大,图书城,24
地大,光谷,4
地大,华科,8
光谷,地大,5
光谷,图书城,9
光谷,华科,7
图书城,光谷,11
华科,光谷,9

问题

  • Edge
package com.te.sortPath;/*** <p>Title : Edge </p>* <p>Description : 起点 , 终点 , 长度</p>** @author huifer* @date 2018/11/08*/
public class Edge {/*** 起点*/public String start;/**** 终点*/public String end;/**** 距离*/public double length;public Edge(String line) {String[] split = line.split(",");start = split[0];end = split[1];length = Double.parseDouble(split[2]);}@Overridepublic String toString() {return "Edge{" +"start='" + start + '\'' +", end='" + end + '\'' +", length=" + length +'}';}
}
  • Vertex
package com.te.sortPath;import java.util.Objects;/*** <p>Title : Vertex </p>* <p>Description : 顶点</p>** @author huifer* @date 2018/11/08*/
public class Vertex {public String name;public double weight =100000;public Vertex(String new_name) {this.name = new_name;}@Overridepublic boolean equals(Object o) {if (this == o) {return true;}if (o == null || getClass() != o.getClass()) {return false;}Vertex vertex = (Vertex) o;return Double.compare(vertex.weight, weight) == 0 &&Objects.equals(name, vertex.name);}@Overridepublic int hashCode() {return Objects.hash(name, weight);}@Overridepublic String toString() {return "Vertex{" +"name='" + name + '\'' +", weight=" + weight +'}';}
}
  • Graph
package com.te.sortPath;import java.util.ArrayList;
import java.util.List;/*** <p>Title : Graph </p>* <p>Description : 图</p>** @author huifer* @date 2018/11/08*/
public class Graph {public List<Edge> edges;public List<Vertex> vertices;public Graph(List<Edge> edges) {this.edges = edges;parse(edges);}@Overridepublic String toString() {return "Graph{" +"edges=" + edges +", vertices=" + vertices +'}';}private void parse(List<Edge> edgeList) {List<Vertex> aaa = new ArrayList<>();for (Edge d : edgeList) {Vertex v = new Vertex(d.start);if (!aaa.contains(v)) {aaa.add(v);}v = new Vertex(d.end);if (!aaa.contains(v)) {aaa.add(v);}}vertices = aaa;}}
  • run

package com.te.sortPath;import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;/*** <p>Title : RunT </p>* <p>Description : todo</p>** @author huifer* @date 2018/11/08*/
public class RunT {public static void main(String[] args) throws Exception {/// 读文件List<Edge> edges = new ArrayList<>();String pathname = "E:\\idea_project\\cloud\\src\\main\\java\\com\\te\\sortPath\\路径数据.txt";FileReader reader = new FileReader(pathname);BufferedReader br = new BufferedReader(reader);String line;while ((line = br.readLine()) != null) {edges.add(new Edge(line));}Graph graph = new Graph(edges);
///List<Vertex> res = graph.vertices;int n = res.size();res.get(0).weight = 0;for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {List<Vertex> rlux = new ArrayList<>();for (Edge e : graph.edges) {if (e.start.equals(res.get(i).name) && e.end.equals(res.get(j).name)) {double w = res.get(i).weight + e.length;
//                        System.out.println(String.format("当前点  %s  - 连接点  %s", res.get(i).name,
//                                res.get(j).name));rlux.add(res.get(i));rlux.add(res.get(j));if (w < res.get(j).weight) {res.get(j).weight = w;
//                            System.out.println(String.format("当前点  %s  - 连接点  %s", res.get(i).name,
//                                    res.get(j).name));rlux.remove(rlux.size() - 1);rlux.add(res.get(j));}}}System.out.println(rlux);}}res.forEach(s -> {System.out.println(s);});}}

结果

Vertex{name='武大', weight=0.0}
Vertex{name='地大', weight=6.0}
Vertex{name='武大', weight=100000.0}
Vertex{name='光谷', weight=10.0}
Vertex{name='图书城', weight=19.0}
Vertex{name='华科', weight=14.0}

【测绘程序设计试题集】 试题04 最短路径计算相关推荐

  1. 微型计算机原理考试试卷,微机原理试题集试题库(带答案解析)

    微机原理试题集试题库(带答案解析) (59页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 34.9 积分 完美WORD格式 微机原理及应用习题集库2一.填 ...

  2. 【VB测绘程序设计】案例10—坐标方位角的计算案例(附源码)

    文章目录 前言 一.界面预览 二.程序介绍 1.坐标方位角的概念 2.程序设计流程图 三.程序源代码 四.数据演示 总结 前言 ` VB程序在测绘领域应用广泛,能够解决一些常见的简单的计算问题,提高工 ...

  3. c语言程序设计 银行整存整取,《C语言程序设计习题试题集》.doc

    <C语言程序设计习题试题集>.doc 1.已知银行整存整取存款不同期限的月息利率分别为: 0.315% 期限一年 0.330% 期限二年 0.345% 期限三年 0.375% 期限五年 0 ...

  4. c语言考试编程题万能公式,C语言程序设计历年统考试题集10套含答案(可编辑)

    <C语言程序设计历年统考试题集10套含答案(可编辑)>由会员分享,可在线阅读,更多相关<C语言程序设计历年统考试题集10套含答案(可编辑)(39页珍藏版)>请在人人文库网上搜索 ...

  5. c语言程序设计题模板,C语言程序设计试题集

    C语言程序设计试题集Tag内容描述: 1.一填空 基础知识 1. 每个C程序都必须有且仅有一个________ 函数. 2. C语言程序开发到执行通常要经过6个阶段即编辑.预处理.________. ...

  6. 二级C语言程序设计上机模拟考试,《上机考试模拟试题集——二级QBASIC语言程序设计》C语言-程序设计.pdf...

    全国计算机等级考试 二级 QBA SIC 语言程序设计 上机考试模拟试题集 全 国计算机等级考试命题研究组 编 中 国 大 地 出 版 社 内容简介 本书是 由全 国计算机等级考试命题研究组专家编写的 ...

  7. 测试面试题集-Python编程题(1)

    ------·今天距2021年304天·------ 这是ITester软件测试小栈第98次推文 01 第一题 使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和. ...

  8. 引用 JAVA面试题集

    引用 狼行天下 的 JAVA面试题集 1.C++或Java中的异常处理机制的简单原理和应用. 当J***A程序违反了J***A的语义规则时,J***A虚拟机就会将发生的错误表示为一个异  常.违反语义 ...

  9. java面试题集汇总

    http://blog.csdn.net/jackfrued/article/details/44921941  Java面试题全集(上) http://blog.csdn.net/jackfrued ...

最新文章

  1. mybatis 配置文件中set丢失逗号
  2. 4、图书类别添加功能
  3. mongodb Install the MongoDB service
  4. python 基于UDP协议的socket 报错:WinError 10022 提供了一个无效的参数(原因:服务端没有绑定ip)
  5. 香帅的北大金融学课笔记17 -- 公司治理
  6. ASP.NET十分有用的页面间传值方法(转)
  7. windows下如何下载并安装Python 3.5.
  8. aws python lambda_python – AWS Lambda发送HTTP请求
  9. python在windows平台的多版本配置
  10. oracle下的数据库实例、表空间、用户及其表的区分
  11. STM32学习第三课:STM32 c语言学习基础3(内存操作、指针、结构指针)
  12. C++是一款设计非常失败的语言吗?
  13. Python3 OpenCV
  14. 深入理解Scala 标识符,命名和域
  15. 【海康威视】WPF客户端二次开发:【2】语音对讲
  16. Excel计算工作日的公式
  17. 【无标题】问题记录—— (掌阅)
  18. p语言是python吗-python编程语言是什么?它能做什么?
  19. 下载宝(mt7621) openwrt 挂载sd卡
  20. 织梦内容页或列表页添加相关专题功能调用

热门文章

  1. 数理统计之参数估计与假设检验(二)——经验分布函数与QQ图
  2. hdu2094 集合set
  3. [Kafka] Kafka基本架构
  4. 在Ignite中使用线性回归算法
  5. NMAD-2.14b1安装
  6. ant安装和ant的环境配置
  7. typescript Awaited<Type>教程用法
  8. Java_单继承和多继承
  9. 【正则表达式】从字符串中提取数字
  10. 1、Neural Rendering