package 便利蜂;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.LinkedList;

import java.util.Scanner;

public class 高老庄 {

private HashMap map = new HashMap();;

private ArrayList

 res;

class Address{

private String addressName;

private boolean isReached = false;

private Address east;

private Address west;

private Address north;

private Address south;

public Address(String addressName) {

this.addressName = addressName;

}

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String[] arr = sc.nextLine().split(",");

高老庄 main = new 高老庄();

main.generateMap();

main.findPath(arr[0], arr[1]);

main.printPath();

}

private void printPath() {

for(int i=1; i

Address cur = res.get(i);

Address pre = res.get(i-1);

if(pre.north == cur) System.out.print("north");

else if(pre.south == cur) System.out.print("south");

else if(pre.west == cur) System.out.print("west");

else if(pre.east == cur) System.out.print("east");

if(i != res.size()-1) System.out.print(",");

}

}

public void findPath(String wukong, String bajie) {

Address start = map.get(wukong);

Address end = map.get(bajie);

ArrayList

 path = new ArrayList();

path.add(start);

start.isReached = true;

dfs(start, end, path);

}

private void dfs(Address start, Address end, ArrayList

 path) {

if(start == end) {

if(res == null || path.size()

res = new ArrayList(path);

}

return;

}

int isEnd = 0;

if(start.north != null && !start.north.isReached) {

path.add(start.north);

start.north.isReached = true;

dfs(start.north, end, path);

path.remove(path.size()-1);

start.north.isReached = false;

}

if(start.south != null && !start.south.isReached) {

start.south.isReached = true;

path.add(start.south);

dfs(start.south, end, path);

path.remove(path.size()-1);

start.south.isReached = false;

}

if(start.west != null && !start.west.isReached) {

start.west.isReached = true;

path.add(start.west);

dfs(start.west, end, path);

path.remove(path.size()-1);

start.west.isReached = false;

}

if(start.east != null && !start.east.isReached) {

start.east.isReached = true;

path.add(start.east);

dfs(start.east, end, path);

path.remove(path.size()-1);

start.east.isReached = false;

}

}

public void generateMap() {

Address DAOTIAN1 = new Address("DAOTIAN1");

Address TULU1 = new Address("TULU1");

Address DAOTIAN = new Address("DAOTIAN");

Address TULU = new Address("TULU");

Address CUNKOU = new Address("CUNKOU");

Address NONGSHE = new Address("NONGSHE");

Address TULU2 = new Address("TULU2");

Address JIEDAO = new Address("JIEDAO");

Address TIEPU = new Address("TIEPU");

Address LIUJIABUDIAN = new Address("LIUJIABUDIAN");

Address JIEDAO1 = new Address("JIEDAO1");

Address XIAOJIUGUAN = new Address("XIAOJIUGUAN");

Address ZHANGFANG = new Address("ZHANGFANG");

Address PIANTING = new Address("PIANTING");

Address GUIGE = new Address("GUIGE");

Address YASHI = new Address("YASHI");

Address HUAYUAN = new Address("HUAYUAN");

Address HOUYUAN = new Address("HOUYUAN");

Address ZHENGTING = new Address("ZHENGTING");

Address ZHENGYUAN = new Address("ZHENGYUAN");

Address GAOJIADAYUAN = new Address("GAOJIADAYUAN");

Address JIEDAO2 = new Address("JIEDAO2");

Address PIANFANG = new Address("PIANFANG");

Address FANTING = new Address("FANTING");

Address XIYIFANG = new Address("XIYIFANG");

Address TULU3 = new Address("TULU3");

Address QINGSHILU = new Address("QINGSHILU");

DAOTIAN1.south = TULU1;

TULU1.north = DAOTIAN1;

TULU1.south = DAOTIAN;

DAOTIAN.north = TULU1;

DAOTIAN.south = TULU;

TULU.north = DAOTIAN;

TULU.south = CUNKOU;

CUNKOU.north = TULU;

CUNKOU.east = NONGSHE;

NONGSHE.west = CUNKOU;

TULU1.east = TULU2;

TULU2.west = TULU1;

TULU2.east = JIEDAO;

JIEDAO.west = TULU2;

LIUJIABUDIAN.south = JIEDAO;

JIEDAO.north = LIUJIABUDIAN;

JIEDAO.south = TIEPU;

TIEPU.north = JIEDAO;

JIEDAO.east = JIEDAO1;

JIEDAO1.west = JIEDAO;

JIEDAO1.south = XIAOJIUGUAN;

XIAOJIUGUAN.north = JIEDAO1;

YASHI.south = GUIGE;

GUIGE.north = YASHI;

GUIGE.east = HOUYUAN;

HOUYUAN.west = GUIGE;

PIANTING.east = ZHENGTING;

ZHENGTING.west = PIANTING;

ZHANGFANG.east = ZHENGYUAN;

ZHENGYUAN.west = ZHANGFANG;

JIEDAO1.east = GAOJIADAYUAN;

GAOJIADAYUAN.west = JIEDAO1;

HUAYUAN.south = HOUYUAN;

HOUYUAN.north = HUAYUAN;

HOUYUAN.south = ZHENGTING;

ZHENGTING.north = HOUYUAN;

ZHENGYUAN.north = ZHENGTING;

ZHENGTING.south = ZHENGYUAN;

ZHENGYUAN.south = GAOJIADAYUAN;

GAOJIADAYUAN.north = ZHENGYUAN;

HOUYUAN.east = XIYIFANG;

XIYIFANG.west = HOUYUAN;

ZHENGTING.east = FANTING;

FANTING.west = ZHENGTING;

ZHENGYUAN.east = PIANFANG;

PIANFANG.west = ZHENGYUAN;

GAOJIADAYUAN.east = JIEDAO2;

JIEDAO2.west = GAOJIADAYUAN;

JIEDAO2.east = TULU3;

TULU3.west = JIEDAO2;

TULU3.east = QINGSHILU;

QINGSHILU.west = TULU3;

map.put("DAOTIAN1", DAOTIAN1);

map.put("TULU1", TULU1);

map.put("DAOTIAN", DAOTIAN);

map.put("TULU", TULU);

map.put("CUNKOU", CUNKOU);

map.put("NONGSHE", NONGSHE);

map.put("TULU2", TULU2);

map.put("LIUJIABUDIAN", LIUJIABUDIAN);

map.put("JIEDAO", JIEDAO);

map.put("TIEPU", TIEPU);

map.put("YASHI", YASHI);

map.put("GUIGE", GUIGE);

map.put("PIANTING", PIANTING);

map.put("ZHANGFANG", ZHANGFANG);

map.put("JIEDAO1", JIEDAO1);

map.put("XIAOJIUGUAN", XIAOJIUGUAN);

map.put("HUAYUAN", HUAYUAN);

map.put("HOUYUAN", HOUYUAN);

map.put("ZHENGTING", ZHENGTING);

map.put("ZHENGYUAN", ZHENGYUAN);

map.put("GAOJIADAYUAN", GAOJIADAYUAN);

map.put("XIYIFANG", XIYIFANG);

map.put("FANTING", FANTING);

map.put("PIANFANG", PIANFANG);

map.put("JIEDAO2", JIEDAO2);

map.put("TULU3", TULU3);

map.put("QINGSHILU", QINGSHILU);

}

}

第三题 简单的DFS吧,但是我觉得应该有更好的方法,DFS还是有点太蠢了

便利蜂java面试题_便利蜂4.10笔试题Java(全AC)相关推荐

  1. php mysql笔试题_初级PHP程序员笔试题

    初级PHP程序员笔试题 答题时间:60 – 90分钟 一.基础及程序题(建议使用你擅长的语言:C/C++.PHP.Java) 1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数 ...

  2. python算法笔试面试题_哔哩哔哩笔试题 算法岗 Python

    第一题 Counter就可以 from collections import Counter if __name__=='__main__': a = input() b = input() ret ...

  3. python 数据类笔试题_一道 Python 类的笔试题详解

    r = {} class C(object): def __init__(self, a, b): self.a = a self.b = b if b == 'a': orig = super(C, ...

  4. 赛码浪潮笔试题库软件实施岗位_浪潮集团校园招聘笔试题.doc

    浪潮集团校园招聘笔试题.doc 浪潮集团校园招聘笔试题 浪潮集团校园招聘笔试题篇一:浪潮笔试题目 6.2 笔试题目浪潮软件研发B卷(60分钟) 注:对于有C和JAVA选择的试题,考生可以选择其中一种解 ...

  5. 【机试题】2014大疆嵌入式笔试题(附超详细解答,下篇)

    上一篇主要是对<2014大疆嵌入式笔试题>的前一部分进行了解答,本文主要是对接下来的几道题进行解答.想要参考上一篇的点击链接:[机试题]2014大疆嵌入式笔试题(附超详细解答,上篇). 嵌 ...

  6. php程序员试题,php面试题带答案,php程序员笔试题与答案(一)

    php面试题带答案,php程序员笔试题与答案(一) php程序员招聘笔试题: 问题 1. 选择合适的答案填入空白处 PHP 是一种______脚本语言,基于______引擎.PHP 最常被用来开发动态 ...

  7. java 2017腾讯面试题_腾讯2017刁难面试题,是不是大神就看你会做几题

    原标题:腾讯2017刁难面试题,是不是大神就看你会做几题 一.今日头条2017笔试题(决策问题) 现在有两堆石子,小今与小条玩游戏,2个人都足够聪明,两个人规定:每次每人只能从其中一堆中取走1个或2个 ...

  8. java hashmap用法_备战金九银十:Java核心技术面试题100+,助你搞定面试官

    一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理. 这篇文章梳 ...

  9. java框架核心技术_你必须掌握的 21 个 Java 核心技术!(干货)

    点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘 ...

  10. java 核型技术_你必须掌握的 21 个 Java 核心技术!(转自Java技术栈)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE ...

最新文章

  1. 线程常用方法,线程安全和同步锁
  2. 使用core data
  3. C++:C++语言入门级基础知识考察点回顾之基本数据类型、流程控制
  4. window.open 和showModalDialog的返回值
  5. mysql字符集排序规则_MySQL原理 - 字符集与排序规则
  6. IDLDrawWidaget Activex
  7. cat testEOF,more
  8. [转]jQuery为控件添加水印文字
  9. python将对象放入列表_将所有python-rom对象放入列表
  10. iconv字符编码转换
  11. GoogleEarth二次开发平台指南(4) --- 三维视频融合、视频拼接与摄像头控制
  12. CSS3实现折角效果
  13. SpringCloud第十章zuul路由网关
  14. 如何用Java分配一段连续的1G的内存空间?需要注意些什么?
  15. 两个无线路由器的连接(修订)
  16. Jmeter性能测试之测试报告
  17. USB Network Native Driver for ESXi更新到支持ESXi7.0.1
  18. Alienware Area-51M 安装Win10+Ubuntu18.04 双系统
  19. kafka | 生产者压缩算法面面观
  20. 中山大学数字电路实验时钟设计大作业

热门文章

  1. arduino笔记32:nRF24l01模块使用 电磁波频率 距离限制 掉电模式 热待机模式
  2. VMware12里使用U盘进行WIN10安装
  3. 修改RPG Maker的加密包和解密包函数
  4. mysql cluster 设置单向复制_MySQL replication 单向复制实验配置(chn)
  5. 依次输入5句话后将他们逆序输出
  6. js加载并显示excel文件
  7. Spring MVC数据绑定 ----从入门到精通篇(三) POJO数据类型的绑定和自定义数据绑定
  8. Linux中移动光标cw什么意思,linux常用指令详解
  9. 中小软件开发企业将在云计算时代获新生
  10. 饿了,你需要的是面包而不是面粉或小麦