地铁换乘(华为机试样题)
来源:互联网 发布:淘宝修改昵称 编辑:程序博客网 时间:2024/05/17 05:56
题目简介:
描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15
输入:输入两个不同的站名
输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次
输入样例:A1 A3
输出样例:3
import java.util.*;public class Main{public static void main(String args[]){Scanner cin = new Scanner(System.in);String station = "A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15";String[] stations = station.split(" ");int length = stations.length;int[][] arr = new int[length][length];HashMap<String, Integer> stationMap = new HashMap<String, Integer>();for(int i=0; i<stations.length; i++) {stationMap.put(stations[i], i);}for(int i=0; i<length; i++){for(int j=0; j<length; j++) {if(i == j) {arr[i][j] = 0;} else {arr[i][j] = 1000;}}}for(int i=0; i<length-1; i++) {arr[i][i+1] = 1;arr[i+1][i] = 1;}arr[9][25] = 0;arr[14][31] = 0;arr[25][9] = 0;arr[31][14] = 0;arr[stationMap.get("A18")][stationMap.get("B1")] = 1000;arr[stationMap.get("B1")][stationMap.get("A18")] = 1000;arr[stationMap.get("A1").intValue()][stationMap.get("A18").intValue()] = 1;//Floyed算法求解for(int k=0; k<length; k++){for(int i=0; i<length; i++) {for(int j=0; j<length; j++) {if((arr[i][k] + arr[k][j]) < arr[i][j]) {arr[i][j] = arr[i][k] + arr[k][j];}}}}while (cin.hasNext()){String state1 = cin.next();String state2 = cin.next();int i = stationMap.get(state1);int j = stationMap.get(state2);System.out.println(arr[i][j] + 1);}}}
0 0
- 地铁换乘(华为机试样题)
- 华为上机考试样题三----地铁线路换乘问题
- 地铁换乘—华为2014校招机试样题 —Dijkstra 和 Floyd-Warshall 算法解决
- 华为机试题-地铁换乘
- 华为机试题——高级题:地铁换乘
- 华为机试题(地铁换乘,图的应用)
- 华为机试—地铁换乘(图文吐血整理)
- 华为机试地铁换乘C++实现(不容易啊)
- 华为机试地铁换乘问题
- 华为机试--地铁换乘问题
- 华为笔试题——地铁换乘
- 华为笔试题:地铁换乘问题
- 华为地铁换乘问题
- 华为机试样题
- 华为2014上机考试样题_高级题_地铁换乘最短路径_无向无权图+邻接表存储+BFS广度优先算法
- 华为2014上机考试样题_高级题_地铁换乘最短路径_无向无权图+邻接表存储+BFS广度优先算法
- 华为机试 地铁换乘问题(最短路径算法)
- 华为2014机试样题及代码(一)
- 修改表字段
- 奇怪的比赛
- HDU 1676 Full Tank? 限制最短路(difficult)
- 怎样修改SWF中的链接?
- oracle timestamp 时间戳增加一天
- 地铁换乘(华为机试样题)
- C#的装箱与拆箱
- 34.打印十字图
- JMS
- 第三周作业
- 关于Java中的继承与访问修饰符的一些总结
- 内存泄漏检查工具valgrind的安装与使用
- oracle 高级分组 GROUPING_ID
- uva1232 - SKYLINE 线段树