輸入格式:java
首先,你會讀到若干個城市的名字。每一個名字都只是一個英文單詞,中間不含空格或其餘符號。當讀到名字爲「###」(三個#號)時,表示城市名字輸入結束,###並非一個城市的名字。若是記讀到的城市名字的數量爲n。數組
而後,你會讀到nxn的一個整數矩陣。第一行的每個數字,表示上述城市名單中第一個城市依次到另外一個城市之間的里程。表中同一個城市之間的里程爲0。spa
最後,你會讀到兩個城市的名字。blog
輸出格式:ci
輸出這兩個城市之間的距離。get
輸入樣例:it
Hagzou Hugzou Jigxng ###class
0 1108 708import
1108 0 994容器
708 994 0
Hagzou Jigxng
輸出樣例:
708
-------------------------------分割線:下面代碼--------------------------------------
mport java.util.HashMap;
import java.util.Scanner;
public class 查找里程 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String x;
foundLiCheng LC = new foundLiCheng();
Scanner in = new Scanner(System.in);
x = in.next();
while(!x.equals("###"))
{
LC.insert(x);
x = in.next();
}
LC.create();
String a = in.next();
String b = in.next();
System.out.println(LC.found(a, b));
}
}
class foundLiCheng
{
private HashMap<Integer, String> City = new HashMap<Integer, String>();//建立集合容器,用來存城市名和城市對應數組的下標
private int id = 0; //下標
private int[][] d = new int[100][100];//建立二維數組,存城市到城市的距離
//添加城市名
public void insert(String city)
{
City.put(id, city);
id++;
}
//根據輸入的城市數量,建立對應的二維數組存城市到城市的距離
public void create()
{
int[][] LiCheng = new int[City.size()][City.size()];
Scanner in = new Scanner(System.in);
for(int i=0;i<City.size();i++)
{
for(int j=0;j<City.size();j++)
{
LiCheng[i][j] = in.nextInt();
}
}
d = LiCheng;
}
/* */
public int getSize()
{
return id;
}
//根據兩個城市名找對應距離
public int found(String a,String b)
{
int x=0,y=0;
int count=0;
//經過for each 遍歷 城市名找到對應的數組下標
for(int key : City.keySet() )
{
if(City.get(key).equals(a))
{
x = key;
count++;
}
if(City.get(key).equals(b))
{
y = key;
count++;
}
}
//若是兩個都找到 返回對應的距離
if(count == 2)
{
return d[x][y];
}
else
{
System.out.println("查詢的城市距離沒記錄!");
return -1;
}
}
}
結果: