收费公路重建问题
数据结构与算法分析(C语言描述)原书第二版,P304 回溯算法:
书中给出了详细分析,并给出了伪代码,根据书上的伪代码,写了个python实现的。
简单一点说这个问题就是根据给定的条件求N个未知数,N个未知数分别代表公路上的N个点(也可以当作坐标轴上的N个点),
这里用[x1, x2, x3,...,xN]表示,而给定的条件为任意两个点间距离的集合及{|xi - xj|, i,j=1,2,3,...,N 且 i!=j},根据统计学知识可知,这
个集合的元素有N*(N-1)/2个(从N个元素中任取两个的方法数)。
如果给定一个解[x1, x2, x3,...,xN],那么将每个元素加上同一个常量C那么又能得到一组满足条件的解,所以这里直接将x1=0,即只
求x1=0时的一组解;
x1=0之后,这里对于xN就应该等于集合{|xi - xj|, i,j=1,2,3,...,N 且 i!=j}中的最大值,还拿书上的例子:
集合D = {1, 2, 2&#x