我知道有很多类似于这个的问题,我在过去的一小时内对它们进行了审核,但是我无法弄清楚如何使用提供的答案来解决我的问题。
我的任务如下:
编写一个程序,提示用户输入城市列表,其中 每个城市都有一个名称和x和y坐标。毕竟是所有城市 已经输入,程序应该使用递归算法 打印从中开始的所有可能路线的长度 第一个城市进入,在最后一个城市结束,并访问每个城市 在列表中。对于每个路线,程序应打印名称 访问的每个城市,其次是路线的长度。
我解决了这个问题,我可以弄清楚大部分代码。让我陷入困境的是找到第一个和最后一个城市之间所有可能的组合。我该怎么办呢? 我试图用一个简单的5个整数数组来解决它,对于我的生活,我无法弄清楚如何打印所有组合。
你能帮助我克服这个可怕的问题吗?
谢谢。
答案 0 :(得分:0)
我建议您使用图表,而不是使用数组。
您可以在此处了解有关旅行商问题的更多信息TSP或Brute-force for TSP
答案 1 :(得分:0)
您是否被迫使用递归算法?
如果不是,这是我的建议:
假设输入的城市是A,C1,...,Cn,B,其中A和B是第一个和最后一个城市。第一个和最后一个城市无法更改,因此您应该计算n个城市的所有组合。要计算所有组合,您可以从0到2 ^ n-1进行计数。对于计数器的每个值,您有一个路径形式A到B.每个计数器值的每个位可以与一个城市(Ci)相关。现在,对于计数器的每个值,您可以打印A到B的路径(带有一些Ci):
答案 2 :(得分:0)
这是一种众所周知的图表方法。如果您对图表有所了解,那么只需看一眼DFS (recursively),就可能满足您的期望。