package mooc_java进阶_d3周题;
/**
* 没有使用HashMap
*/
import java.util.ArrayList;
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);
String stopSymbol = "###";
int cityNumbers = 0;
boolean goOn = true;
ArrayList<String> citys = new ArrayList<String>();
while (goOn) {
String cityOnly = in.next();
if (cityOnly.equals(stopSymbol)) {
break;
} else {
citys.add(cityOnly);
}
}
cityNumbers = citys.size();
int n = cityNumbers;
Scanner in1 = new Scanner(System.in);
int allN = n * n;
int[] matrix = new int[allN];
for (int i = 0; i < matrix.length; i++) {
matrix[i] = in1.nextInt();
}
Scanner in3 = new Scanner(System.in);
String[] twoCitys = new String[2];
twoCitys[0] = in3.next();
twoCitys[1] = in3.next();
int count = 0;
int firstCityIndex = 0;
int secondCityIndex = 0;
for (int j = 0; j < 2; j++) {
for (int i = 0; i < n; i++) {
if (citys.get(i).equals(twoCitys[j])) {
count++;
if (count == 1) {
firstCityIndex = i;
} else if (count == 2) {
secondCityIndex = i;
} else {
}
}
}
}
int leftCityIndex = 0;
int rightCityIndex = 0;
int city_D_value = 0;
int li;
int liInMat;
if (firstCityIndex < secondCityIndex) {
leftCityIndex = firstCityIndex;
li = leftCityIndex;
liInMat = li * n + li;
city_D_value = secondCityIndex - firstCityIndex;
rightCityIndex = liInMat + city_D_value;
} else if (firstCityIndex > secondCityIndex) {
leftCityIndex = secondCityIndex;
li = leftCityIndex;
liInMat = li * n + li;
city_D_value = firstCityIndex - secondCityIndex;
rightCityIndex = liInMat + city_D_value;
} else {
}
int distance = matrix[rightCityIndex];
if (distance != 0) {
System.out.print(distance);
} else {
System.out.println("0");
}
in.close();
}
}

上面这个没有通过在线验证,不过我本机试着还行.可能是有些问题吧,写得太杂了

之后看了其他人用HashMap实现的,我尝试了下,不过最终还是比他们大神写的要长很多:不过也很满足已经通过了测验:

package mooc_java进阶_d3周题;
/**
* 使用了HashMap
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner; public class Main4 { public static void main(String[] args) { Main4 m = new Main4(); // STEP 1 : 用基础方法去模拟方法实现
Scanner in = new Scanner(System.in);
ArrayList<String> citys = new ArrayList<String>();
boolean go = true;
String oneOfcity;
String stopSymbol = "###";
while (go) {
oneOfcity = in.next();
if (oneOfcity.equals(stopSymbol)) {// 如果这轮输入的单个城市是###休止符
break;//
}
citys.add(oneOfcity);
} int n = citys.size();// 获取城市数量
int numOfCitys = n * n;// 获取城市矩阵距离数量 // STEP 2 : 获取矩阵数字
ArrayList<Integer> matrixNumber = new ArrayList<Integer>();
int count = 0;
Integer x;
Integer xx = null;
while (go) {
x = in.nextInt();
matrixNumber.add(x);// 接收矩阵数字
count++;
if (count == numOfCitys) {
break;
}
}
// STEP 3 : 获取最后的两个城市 调用getCitysGroup方法
String lastTwoCitys = m.getCitysGroup(in.next(), in.next());
// STEP 4 : 返回的Map是拼接的城市名字符串以及Integer矩阵数字
Map all = m.getHashCity(citys, matrixNumber);
Integer result = (Integer) all.get(lastTwoCitys);
System.out.println(result);
}
//怎样创建一个方法接受两个方法传入的动态数据
//接收citys 和 矩阵
private Map getHashCity(ArrayList<String> list,ArrayList<Integer> matrix) {
String hashcity = null;
Integer matNumbers = null;
Map<String, Integer> hashcitys = new HashMap<>();
int numCount = 0;
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
hashcity = getCitysGroup(list.get(i), list.get(j));
matNumbers = matrix.get(numCount);
hashcitys.put(hashcity, matNumbers);
numCount++;
}
}
return hashcitys;
}
private String getCitysGroup(String one, String two) {
// hashString现在是城市组合的相加的字符串
String hashString = one + two;
return hashString; } }

https://www.icourse163.org/learn/ZJU-1001542001#/learn/ojhw?id=1003683048

MOOC_Java进阶_翁恺讲_第三周题的更多相关文章

  1. 第十讲_图像检索 Image Retrieval

    第十讲_图像检索 Image Retrieval 刚要 主要是图像预处理和特征提取+相似度计算 相似颜色检索 算法结构 颜色特征提取:统计图片的颜色成分 颜色特征相似度计算 色差距离 发展:欧式距离- ...

  2. 第九讲_图像生成 Image Captioning

    第九讲_图像生成 Image Captioning 生成式对抗网络 Generative Adversarial network 学习数据分布:概率密度函数估计+数据样本生成 生成式模型是共生关系,判 ...

  3. 第八讲_图像问答Image Question Answering

    第八讲_图像问答Image Question Answering 课程结构 图像问答的描述 具备一系列AI能力:细分识别,物体检测,动作识别,常识推理,知识库推理..... 先要根据问题,判断什么任务 ...

  4. 第七讲_图像描述(图说)Image Captioning

    第七讲_图像描述(图说)Image Captioning 本章结构 递归神经网络 时序后向传播(BPTT) 朴素Vanilla-RNN 基本模型 用sigmoid存在严重的梯度消失 LSTM长短时记忆 ...

  5. 第六讲_图像分割Image Segmentation

    第六讲_图像分割Image Segmentation 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet 目录 +三大数 ...

  6. 第四讲_图像识别之图像分类Image Classification

    第四讲_图像识别之图像分类Image Classification 目录 图片分类 性能指标:top1,top5 ILSVRC:每种任务数据集不一样 imageNet:根据WorldNet组织的图片集 ...

  7. 第二讲_图像数据处理Image Data Processing

    第二讲_图像数据处理Image Data Processing 深度模型出现后被弱化,但是思想的影子在深度模型中可以看到的 图片存储原理 RGB颜色空间:三通道(b,g,r),加法混色 CMY(K): ...

  8. Javascript Jquery 中的数组定义与操作_子木玲_新浪博客

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  9. c++拷贝构造函数(翁恺c++公开课[26-27]学习笔记)

    这节课在p26.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...

随机推荐

  1. javaScript高级教程(五) Event Flow

    1.两个阶段三个模型:Netscape支持事件捕获,IE支持事件冒泡,w3c是先捕获后冒泡 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 S ...

  2. 【Python】详解Python多线程Selenium跨浏览器测试

    前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...

  3. 如何使用Soft-NMS实现目标检测并提升准确率

    非极大值抑制(Non-Maximum suppression,NMS)是物体检测流程中重要的组成部分.它首先基于物体检测分数产生检测框,分数高的检测框M被选中,其他与被选中检测框又明显重叠的检测框被抑 ...

  4. xpath教程 1 - 什么是XPath

    xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...

  5. InnoSQL/MySQL并行复制的实现与配置

    InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...

  6. js-jquery-Validate校验【二】中文api

    jQuery.validate 中文 API 名称 返回类型 描述 validate(options) Validator 验证所选的 FORM. valid() Boolean 检查是否验证通过. ...

  7. SQLyog恢复数据库报错解决方法【Error Code: 2006 - MySQL server has gone away】

    https://blog.csdn.net/niqinwen/article/details/8693044 导入数据库的时候 SQLyog 报错了 Error Code: 2006 – MySQL ...

  8. [LeetCode] 687. Longest Univalue Path_Easy tag: DFS recursive

    Given a binary tree, find the length of the longest path where each node in the path has the same va ...

  9. 简单的应用可以用storyBoard

    可是问题,你不知道你的项目有多复杂,storyBoard跳转控制有代码这么灵活吗? 1. 假是是根据推送来推出页面呢? 2. 假如我要根据不同情况不停地推出不同的页面呢?storyBoard怎么确定关 ...

  10. 【C语言】指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...