0

我有这个问题需要解决:

输入

  • 城市之间的路线列表,所有路线都将从同一个起点开始
  • 集所有城市

输出

  • 可以访问所有城市的路径组,如果没有找到则返回组以最少的路线覆盖大部分城市。

示例

测试用例 1:

输入

  • 路线清单:

    1. Newyork -> Washington -> Los Angeles -> Chicago
    2. Newyork -> Houston -> Alaska
    3. Newyork -> Dallas
    4. Newyork -> Houston -> Washington -> Chicago -> Los Angeles -> Alaska
    5. Newyork -> Alaska
    6. Newyork -> Chicago
    7.Newyork -> Los Angeles

  • 城市:Newyork, Washington, Los Angeles, Chicago, Alaska, Dallas, Houston

输出:

1. Newyork -> Houston -> Washington -> Chicago -> Los Angeles -> Alaska
2.Newyork -> Dallas

这是最好的团体,因为只有 2 条路线它可以访问所有给定的城市

测试用例 2:

输入

  • 路线清单:

    1. Newyork -> Washington -> Los Angeles -> Chicago
    2. Newyork -> Houston -> Alaska
    3. Newyork -> Dallas
    4. Newyork -> Alaska
    5. Newyork -> Chicago
    6.Newyork -> Los Angeles

  • 城市:Newyork, Washington, Los Angeles, Chicago, Alaska, Dallas, Houston

输出:

1. Newyork -> Washington -> Los Angeles -> Chicago
2. Newyork -> Houston -> Alaska
3.Newyork -> Dallas

这是最好的团体,因为它有 3 条路线可以访问所有给定的城市

测试用例 3:

输入

  • 路线清单:

    2. Newyork -> Houston -> Alaska
    3. Newyork -> Dallas
    4. Newyork -> Alaska
    5. Newyork -> Chicago
    6.Newyork -> Los Angeles

  • 城市:Newyork, Washington, Los Angeles, Chicago, Alaska, Dallas, Houston

输出:

1. Newyork -> Houston -> Alaska
2. Newyork -> Chicago
3. Newyork -> Dallas
4.Newyork -> Los Angeles

这是最好的团体,因为有 4 条路线,它可以访问 6/7 个城市(除了Washington

执行

public static void main(String[] args){
    List<List<String>> allRoutes = new ArrayList<>();
    allRoutes.add(List.of("Newyork","Washington","Los Angeles","Chicago"));
    allRoutes.add(List.of("Newyork","Houston","Alaska"));
    allRoutes.add(List.of("Newyork","Dallas"));
    allRoutes.add(List.of("Newyork","Houston","Washington","Chicago","Los Angeles","Alaska"));
    allRoutes.add(List.of("Newyork","Alaska"));
    allRoutes.add(List.of("Newyork","Chicago"));
    allRoutes.add(List.of("Newyork","Los Angeles"));
    Set<String> cities = new HashSet<>(List.of("Newyork","Houston","Washington","Chicago","Los Angeles","Alaska"));

    List<List<String>> result = findBestRoute(allRoutes, cities);
    //expected allPaths:
    //`Newyork -> Houston -> Washington -> Chicago -> Los Angeles -> Alaska`\
    //`Newyork -> Dallas`

  }

private static void findBestRoute(List<List<String>> allRoutes, Set<String> cities){
   //implementation
}

那么对于我可以使用的算法有什么建议吗?

4

0 回答 0