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.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...
随机推荐
- qt——QT中QWidget、QDialog及QMainWindow的区别
QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...
- Centos7 中 Node.js安装简单方法
最近,我一直对学习Node.js比较感兴趣.下面是小编给大家带来的Centos7 中 Node.js安装简单方法,在此记录一下,方便自己也方便大家,一起看看吧! 安装node.js 登陆Centos ...
- HTML5-CSS3-JavaScript(4)
CSS3中 变形与动画相关属性 CSS3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的功能.CSS3的变形功能可以对HTML组件执行位移.旋转. ...
- visual studio code 编辑器的配置及快捷键等, vscode, csc
visual studio code (vsc) 对开发node.js,javascript,python,html,golang等比较友好,同时支持git浏览及分屏对比,运行速度快,所以是值得一用的 ...
- html的img标签 强大的title
示例: <img src="smiley-2.gif" alt="Smiley face" width="42" height=&qu ...
- MVC增加操作日志
在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...
- centos 专题-各种配置应有尽有
你想要的在这里都能得到解决: http://www.linuxidc.com/topicnews.aspx?tid=14
- VMware Coding Challenge: The Heist
类似BackpackII问题 static int maximize_loot(int[] gold, int[] silver) { int[][] res = new int[gold.lengt ...
- Problem B. Full Binary Tree
题目 链接:http://code.google.com/codejam/contest/2984486/dashboard#s=p1 googlde code jam 2014 Round1A 解题 ...
- UVALive - 7269 I - Snake Carpet
思路: 多画画就发现从五的时候可以这么填: 六的时候这么填: 七的时候这么填: 看出规律了吗? 没看出的话再画画把. #include <bits/stdc++.h> using name ...