MOOC_Java进阶_翁恺讲_第三周题

简介: package mooc_java进阶_d3周题;/** * 没有使用HashMap */import java.util.ArrayList;import java.util.Scanner;public class Main { public static void m...
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

 

将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。
相关文章
|
Java iOS开发
1072 开学寄语(JAVA)
下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面、理发、整衣,然后思过、读书、锻炼、明智、开悟、精进。而后必成大器也!
1072 开学寄语(JAVA)
|
设计模式 消息中间件 算法
学弟学妹要的Java学习路线我终于写完了
学弟学妹要的Java学习路线我终于写完了
学弟学妹要的Java学习路线我终于写完了
|
Web App开发 Java C++
【干货合集】Java其实很好学,但是你需要知道在“爪哇”的世界里“你究竟在哪?”
Java其实非常易于学习和理解,面向对象而且比C++简单,调试也非常简单,稍微动动手就可以实现一个小功能。而对于大多数同学而言,走进Java的大门非常简单,但是当入门之后,我处于什么地方?应该往哪个方向走?应该怎么走?可能就成为了困扰大家的难题。
7133 0
|
安全 算法 架构师
金九银十,史上最强 Java 面试题整理。
以下会重新整理所有 Java 系列面试题答案、及各大互联网公司的面试经验,会从以下几个方面汇总,本文会长期更新。 Java 面试篇
354 0
|
设计模式 缓存 算法
拜托,学妹,别再问我怎么自学 Java 了!和盘托出(2)
拜托,学妹,别再问我怎么自学 Java 了!和盘托出
134 0
拜托,学妹,别再问我怎么自学 Java 了!和盘托出(2)
|
缓存 搜索推荐 Java
拜托,学妹,别再问我怎么自学 Java 了!和盘托出(1)
拜托,学妹,别再问我怎么自学 Java 了!和盘托出
105 0
|
SQL 前端开发 Cloud Native
一个非科班生Java自学之路的经验总结——《我的Java打怪日记》
笔者从事Java开发七年有余。在技术的道路上,我没有走过什么弯路,一切都是按照自己规划的样子在走下去。但对于一个非科班生来说,如果想在技术的道路坚定的走下去,那么一定是艰辛的。大学四年的知识债务,总是要还的。通过这篇文章,相信无论是初入行业的小白,还是职场老手,我从技术提升角度,如何一步一步成长起来,从如何管理角度分享我这么多年以来的经验。希望能对你有所启发,欢迎在讨论区参与讨论。
47331 0
|
安全 Java 编译器
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏(17)
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏
100 0
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏(17)
|
存储 Java 程序员
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏(7)
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏
108 0
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏(7)
|
JavaScript 前端开发 Java
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏(14)
怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏
121 0

热门文章

最新文章