Description
一个国家有n个城市(n不超过1000),一名旅行家住在最西边的城市里,他希望不重不漏地将每个城市浏览一遍。他的路线将是先向东经过一些城市到达最东边的城市,再向西依次经过剩余城市回到原来所在城市,任意两个城市均可直接相互到达。现给出所有城市的坐标,两个城市间的距离即为坐标两点间的直线距离。求旅行家所需走过的最短距离。
Input
第一行为整数n,是城市个数。
接下来n行,每行两个整数x,y,表示某个城市的坐标。保证坐标在32位整数范围内。
保证最西和最东只有一个城市。
Output
输出最短距离,保留两位小数。
给出代码
你在百度上也提问过这个问题吧。如果你还不熟悉动归,就先看下最基础的动归,别直接上DP
这是经典的旅行家问题,动态规划解决不了。动态规划只能将问题的复杂度降低到2^N
http://blog.csdn.net/dingyaguang117/article/details/6044543
即便如此,2^1000也是天文数字。
我们一般用启发式算法,比如退火或者神经元网络求局部最优解。