先要排除一种思维 最短不一定是横坐标相近的两个点最短
可能有这种情况
. .
.
所以就复杂了
分成3份考虑
左边
右边
中间
先求出左边和右边的,左边和右边的最小值进行比较会得到一个最小值d(左边和右边通过递归的形式得到)
用这个d去给中间的进行剪枝 如果是中间线正负d距离以外的,都剪枝,因为它不可能比d短。
把中间线正负d以内的点暴力求出来最小值,和d进行比较,就是最小值
再考虑一下递归到底层的情况就可以了
先要排除一种思维 最短不一定是横坐标相近的两个点最短
可能有这种情况
. .
.
所以就复杂了
分成3份考虑
左边
右边
中间
先求出左边和右边的,左边和右边的最小值进行比较会得到一个最小值d(左边和右边通过递归的形式得到)
用这个d去给中间的进行剪枝 如果是中间线正负d距离以外的,都剪枝,因为它不可能比d短。
把中间线正负d以内的点暴力求出来最小值,和d进行比较,就是最小值
再考虑一下递归到底层的情况就可以了