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.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...
随机推荐
- java 原子类
一.基本类原子操作 AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference<V>对boolean,Integer,long,refer ...
- java-JProfiler(五)-监控性能
原文地址:http://blog.csdn.net/chendc201/article/details/22897999 一.基础认识 1. 在Live Memory视图里右击相关类,选中Mark C ...
- 【剑指offer】跳台阶
一.题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 二.思路: 同斐波那契数列. 三.代码:
- Kylin构建cube时状态一直处于pending
在安装好kylin之后我直接去访问web监控页面发现能够进去,也没有去看日志.然后在运行官方带的例子去bulid cube时去发现状态一直是pending而不是runing.这个时候才去查看日志: 2 ...
- Mybatis的多对多映射
一.Mybatis的多对多映射 本例讲述使用mybatis开发过程中常见的多对多映射查询案例.只抽取关键代码和mapper文件中的关键sql和配置,详细的工程搭建和Mybatis详细的流程代码可参见& ...
- Chrome Input框老是有输入记录的终极解决方案
尤其是日期框,输入记录都挡住日期弹框了. 浏览器地址栏输入: chrome://settings/autofill,按钮关掉就可以了.
- 7.9 Models -- Connection to An HTTP Server
一.概述 1. 如果你的Ember应用程序需要从一个HTTP服务器加载JSON数据,在你的服务器返回的任何格式中,配置Ember Data的过程将会加载records. 2. store使用一个被称为 ...
- 软件包管理:源码包管理-源码包与RPM包的区别
RPM会安装在默认位置,源码包会安装在指定位置. 绝大多数ROM包遵循此规范.写软件包是就固定好了. 主要影响体现在对服务的管理方法,服务的管理分三种:启动,重启动,停止. 启动时使用绝对路径来启动. ...
- 【C语言】指向一维数组元素的指针
本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...
- C++声明和定义
目录 1 参考 2 概念 2.1 声明 2.2 定义 3 对比 3.1 声明但不是定义的情况 3.2 声明且是定义的情况 3.3 特殊情况 1. 参考 1. <C++程序设计语言>4.9 ...