我有这个问题需要解决:
输入:
- 城市之间的路线列表,所有路线都将从同一个起点开始
- 集所有城市
输出:
- 可以访问所有城市的路径组,如果没有找到则返回组以最少的路线覆盖大部分城市。
示例:
测试用例 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
}
那么对于我可以使用的算法有什么建议吗?