博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pocket Gem OA: Path Finder
阅读量:7210 次
发布时间:2019-06-29

本文共 2223 字,大约阅读时间需要 7 分钟。

 

1. 有向图 找所有start node到end node之间的路径    输入是一个txt 形式如下:      A E      A : B C D.       B : C      C : E      D : B. 输出一个List
是从A到E所有的path

 

 题不难,主要是注意STDIN

1 package pocketGems; 2  3 import java.io.*; 4 import java.util.ArrayList; 5 import java.util.List; 6 import java.util.HashMap; 7 import java.util.HashSet; 8 import java.util.Set; 9 10 public class PathFinder2 {11     public static void main(String[] args)12             throws FileNotFoundException, IOException {13         String filename = "C:/Users/yang liu/workspace/Interview2017/src/pocketGems/input_1.txt";14         if (args.length > 0) {15             filename = args[0];16         }17         18         19         List
answer = parseFile(filename);20 System.out.println(answer); 21 }22 23 static List
parseFile(String filename)24 throws FileNotFoundException, IOException {25 /*26 * Don't modify this function27 */28 BufferedReader input = new BufferedReader(new FileReader(filename));29 List
allLines = new ArrayList
();30 String line;31 while ((line = input.readLine()) != null) {32 allLines.add(line);33 }34 input.close();35 36 37 return parseLines(allLines); 38 }39 40 static List
parseLines(List
allLines) {41 HashMap
> graph = new HashMap
>();42 Set
visited = new HashSet
();43 String src = allLines.get(0).split(" ")[0];44 String dst = allLines.get(0).split(" ")[1];45 for (int i=1; i
());50 for (String nb : neibors) {51 if (nb.length() != 0) graph.get(node).add(nb);52 }53 }54 55 List
res = new ArrayList
();56 visited.add(src);57 helper(res, src, src, dst, visited, graph);58 return res;59 }60 61 static void helper(List
res, String path, String cur, String dst, Set
visited, HashMap
> graph) {62 if (cur.equals(dst)) {63 res.add(path);64 return;65 }66 HashSet
neibors = graph.get(cur); 67 if (neibors != null) {68 for (String each : neibors) {69 if (visited.contains(each)) continue;70 visited.add(each);71 helper(res, path+each, each, dst, visited, graph);72 visited.remove(each);73 }74 }75 }76 }

 

转载地址:http://xorum.baihongyu.com/

你可能感兴趣的文章
设计模式之工厂模式
查看>>
为啥说5G是“全村人的希望” 2018年5G产业大盘点 ...
查看>>
阿里云备案服务号申请方法及申请条件
查看>>
鲜为人知的混沌工程,到底哪里好?
查看>>
AI技术普及,直播平台源码开发市场发展可期
查看>>
【MaxCompute季报】MaxCompute新功能发布 2018Q4
查看>>
虚拟化架构种类、特点及优势
查看>>
可爱的python 大合集
查看>>
java学习计划
查看>>
java反射机制
查看>>
井盖智能化升级最佳实践
查看>>
阿里云服务器部署Java Web项目全过程
查看>>
一个限制进程 CPU 使用率的解决方案
查看>>
HBase-拆分合并和调优参考
查看>>
SQL得到任意一个存储过程的参数列表sp_procedure_params_rowset
查看>>
redis rdb持久化
查看>>
拾叶集 - 江湖一剑客
查看>>
WPF DataTomplate中Command无效
查看>>
【对讲机的那点事】带你玩转手机对讲(下)
查看>>
Bmp图片的结构剖析与代码处理实践[Ruby]
查看>>