MOOC_Java进阶_翁恺讲_第三周题
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进阶_翁恺讲_第三周题的更多相关文章
- 第十讲_图像检索 Image Retrieval
第十讲_图像检索 Image Retrieval 刚要 主要是图像预处理和特征提取+相似度计算 相似颜色检索 算法结构 颜色特征提取:统计图片的颜色成分 颜色特征相似度计算 色差距离 发展:欧式距离- ...
- 第九讲_图像生成 Image Captioning
第九讲_图像生成 Image Captioning 生成式对抗网络 Generative Adversarial network 学习数据分布:概率密度函数估计+数据样本生成 生成式模型是共生关系,判 ...
- 第八讲_图像问答Image Question Answering
第八讲_图像问答Image Question Answering 课程结构 图像问答的描述 具备一系列AI能力:细分识别,物体检测,动作识别,常识推理,知识库推理..... 先要根据问题,判断什么任务 ...
- 第七讲_图像描述(图说)Image Captioning
第七讲_图像描述(图说)Image Captioning 本章结构 递归神经网络 时序后向传播(BPTT) 朴素Vanilla-RNN 基本模型 用sigmoid存在严重的梯度消失 LSTM长短时记忆 ...
- 第六讲_图像分割Image Segmentation
第六讲_图像分割Image Segmentation 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet 目录 +三大数 ...
- 第四讲_图像识别之图像分类Image Classification
第四讲_图像识别之图像分类Image Classification 目录 图片分类 性能指标:top1,top5 ILSVRC:每种任务数据集不一样 imageNet:根据WorldNet组织的图片集 ...
- 第二讲_图像数据处理Image Data Processing
第二讲_图像数据处理Image Data Processing 深度模型出现后被弱化,但是思想的影子在深度模型中可以看到的 图片存储原理 RGB颜色空间:三通道(b,g,r),加法混色 CMY(K): ...
- Javascript Jquery 中的数组定义与操作_子木玲_新浪博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- c++拷贝构造函数(翁恺c++公开课[26-27]学习笔记)
这节课在p26.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...
随机推荐
- javaScript高级教程(五) Event Flow
1.两个阶段三个模型:Netscape支持事件捕获,IE支持事件冒泡,w3c是先捕获后冒泡 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 S ...
- 【Python】详解Python多线程Selenium跨浏览器测试
前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...
- 如何使用Soft-NMS实现目标检测并提升准确率
非极大值抑制(Non-Maximum suppression,NMS)是物体检测流程中重要的组成部分.它首先基于物体检测分数产生检测框,分数高的检测框M被选中,其他与被选中检测框又明显重叠的检测框被抑 ...
- xpath教程 1 - 什么是XPath
xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...
- InnoSQL/MySQL并行复制的实现与配置
InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...
- js-jquery-Validate校验【二】中文api
jQuery.validate 中文 API 名称 返回类型 描述 validate(options) Validator 验证所选的 FORM. valid() Boolean 检查是否验证通过. ...
- SQLyog恢复数据库报错解决方法【Error Code: 2006 - MySQL server has gone away】
https://blog.csdn.net/niqinwen/article/details/8693044 导入数据库的时候 SQLyog 报错了 Error Code: 2006 – MySQL ...
- [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 ...
- 简单的应用可以用storyBoard
可是问题,你不知道你的项目有多复杂,storyBoard跳转控制有代码这么灵活吗? 1. 假是是根据推送来推出页面呢? 2. 假如我要根据不同情况不停地推出不同的页面呢?storyBoard怎么确定关 ...
- 【C语言】指向一维数组元素的指针
本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...