输入格式: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;
}
}
}
结果: