首页 > 其他分享 >结对

结对

时间:2024-04-16 22:22:53浏览次数:22  
标签:结对 String get graph add stationsBetween station

public List getStationsBetween(String startStation, String endStation, List<List> allSubwayStations) {
List stationsBetween = new ArrayList<>();
Map<String, List> graph = buildGraph(allSubwayStations);

    // 检查起始站和终点站是否存在于地铁网络中
    if (!graph.containsKey(startStation) || !graph.containsKey(endStation)) {
        System.out.println("起始站或终点站不在地铁网络中");
        return stationsBetween;
    }
    
    // 使用BFS搜索起始站到终点站之间的所有站点
    Queue<String> queue = new LinkedList<>();
    Set<String> visited = new HashSet<>();
    Map<String, String> parentMap = new HashMap<>();
    
    queue.offer(startStation);
    visited.add(startStation);
    
    while (!queue.isEmpty()) {
        String currentStation = queue.poll();
        if (currentStation.equals(endStation)) {
            // 找到终点站,构建站点路径并返回
            String station = endStation;
            while (!station.equals(startStation)) {
                stationsBetween.add(station);
                station = parentMap.get(station);
            }
            stationsBetween.add(startStation);
            Collections.reverse(stationsBetween);
            return stationsBetween;
        }
        
        List<String> neighbors = graph.get(currentStation);
        if (neighbors != null) {
            for (String neighbor : neighbors) {
                if (!visited.contains(neighbor)) {
                    queue.offer(neighbor);
                    visited.add(neighbor);
                    parentMap.put(neighbor, currentStation);
                }
            }
        }
    }
    
    // 如果没有找到路径,返回空列表
    System.out.println("无法找到起始站到终点站之间的路径");
    return stationsBetween;
}

// 构建地铁站点图
private Map<String, List<String>> buildGraph(List<List<String>> allSubwayStations) {
    Map<String, List<String>> graph = new HashMap<>();
    for (List<String> lineStations : allSubwayStations) {
        for (int i = 0; i < lineStations.size(); i++) {
            String station = lineStations.get(i);
            if (!graph.containsKey(station)) {
                graph.put(station, new ArrayList<>());
            }
            if (i > 0) {
                String prevStation = lineStations.get(i - 1);
                graph.get(station).add(prevStation);
                graph.get(prevStation).add(station);
            }
        }
    }
    return graph;
}

标签:结对,String,get,graph,add,stationsBetween,station
From: https://www.cnblogs.com/hbro/p/18139400

相关文章

  • 结对编程
    前言小学老师要每周给同学出300道四则运算练习题。–这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython–两个运算符,100以内的数字,不需要写答案。–需要检查答案是否正确,并且保证答案在0..100之间–尽可能地多设......
  • 结对编程
    小学老师要每周给同学出300道四则运算练习题。–这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython–两个运算符,100以内的数字,不需要写答案。–需要检查答案是否正确,并且保证答案在0..100之间合作伙伴:2252522代......
  • 结对编程-C#-四则运算
    结对编程-四则运算要求:小学老师要每周给同学出300道四则运算练习题。–这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython–两个运算符,100以内的数字,不需要写答案。–需要检查答案是否正确,并且保证答案在0..100之......
  • 结对编程-四则运算
    要求:小学老师要每周给同学出300道四则运算练习题。–这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython–两个运算符,100以内的数字,不需要写答案。–需要检查答案是否正确,并且保证答案在0..100之间–尽可能地多设......
  • 结对编程-四则运算
    要求:小学老师要每周给同学出300道四则运算练习题。简易版:式子中只有一个一个运算符号。首先定义一个时间种子,用于生成0-100的随机数,以及生成四个运算符号,实现如下charop[]={'+','-','*','/'};//运算符号inta,t,b;voidrandom(){//随机生成数字srand(time(0));......
  • 结对编程 c++语言实现四则运算练习题
    结对同学:2252813程序要求:两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0-100之间通过阅读题目要求,我们决定使用c++语言完成编程,需要满足两个功能,首先生成一个包含两个运算符的算式,参与运算的数字在100之内。下一步检查答案是否正确,并且保证答......
  • 结对编程-四则运算
    这是一个由c++实现的简单的四则运算程序,使用者总共需要完成300题整数四则运算。结对伙伴:2252721程序要求两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0-100之间。需要符合运算规则通过仔细阅读分析题目要求,我和我的同伴决定使用c++来完成这......
  • 结对编程-C++四则运算
    合作伙伴:22528071.项目要求要求实现四则运算练习题。这个程序有很多种实现方式:·C/C++·C#/VB.net/Java.Excel·UnixShell.Emacs/Powershell/Vbscript.Perl·Python·两个运算符,100以内的数字,不需要写答案。·需要检查答案是否正确,并且保证答案在0……100......
  • 四则运算结对编程
     这次结对编程由我和王振宇同学共同完成,使用C++语言代码及注释如下#include<iostream>usingnamespacestd;//实现加法运算doubleadd(doublex,doubley){returnx+y;}//实现减法运算doublesubtract(doublex,doubley){returnx-y;}//实现乘法运算do......
  • 结对编程——Java实现四则运算
    任务要求请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)。小学老师要每周给同学出300道四则运算练习题。–这个程......