2

我有事困扰我。我正在尝试解决以这些信息为指导的建筑桥梁问题。

建造桥梁
考虑一张 2-D 地图,其中有一条水平河流穿过其中心。南岸有 n 个城市,x 坐标为 a(1) ... a(n),北岸有 n 个城市,x 坐标为 b(1) ... b(n)。
您希望通过桥梁连接尽可能多的南北城市对,以使没有两座桥梁交叉。连接城市时,只能连接北岸i市和南岸i市。”

我对 Stack Overflow 进行了研究,发现了一些对我有很大帮助的主题,例如:
搭建桥梁问题 - 如何应用最长递增子序列? 以及
如何使用动态规划确定最长的递增子序列?

但是当我想出 LIS 并尝试手动解决一个示例列表时。假设我有

Northern Bank >> 7 4 3 6 2 1 5
Southern Bank >> 5 3 2 4 6 1 7

排序后的南岸

Northern Bank >> 1 3 4 6 7 2 5 
Southern Bank >> 1 2 3 4 5 6 7

LIS 长度假设为“5”,但实际上在第一个列表中,只有 3 个桥能够创建 (3,2,1)。那么我是否误解了LIS,或者有任何例外不适用于构建桥梁问题?

4

1 回答 1

4

我的理解是您已经使用最长的递增子序列正确解决了问题:

在此处输入图像描述

您可以建造所有 5 座黑色桥梁(但不能建造 2 座红色桥梁)。

为什么你认为你只能做 3 座桥?

于 2013-10-19T19:13:19.330 回答