Algorithm 求解建桥问题的最长递增子序列

Algorithm 求解建桥问题的最长递增子序列,algorithm,dynamic-programming,lis,Algorithm,Dynamic Programming,Lis,我有件事困扰着我。我正试图解决建造桥梁的问题,并将此信息作为指导 建造桥梁 考虑一个二维地图,一个水平河流通过它的中心。南岸有n个城市,x坐标为a(1)。。。北岸a(n)和n座城市,x坐标为b(1)。。。b(n)。 你想用桥连接尽可能多的南北城市,这样就不会有两座桥交叉。连接城市时,只能将北岸的城市i连接到南岸的城市i。” 我对堆栈溢出进行了研究,发现了一些真正对我有帮助的主题,例如: 和 但是当我提出LIS并试图手工解决一个样本列表时,假设我有 Northern Bank >>

我有件事困扰着我。我正试图解决建造桥梁的问题,并将此信息作为指导

建造桥梁
考虑一个二维地图,一个水平河流通过它的中心。南岸有n个城市,x坐标为a(1)。。。北岸a(n)和n座城市,x坐标为b(1)。。。b(n)。
你想用桥连接尽可能多的南北城市,这样就不会有两座桥交叉。连接城市时,只能将北岸的城市i连接到南岸的城市i。”

我对堆栈溢出进行了研究,发现了一些真正对我有帮助的主题,例如:

但是当我提出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,或者在这方面是否存在任何不适用于构建桥问题的例外情况?

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

你可以建造所有5座黑色桥梁(但不是2座红色桥梁)


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

我的理解是,你已经用最长的递增子序列正确地解决了这个问题:

你可以建造所有5座黑色桥梁(但不是2座红色桥梁)


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

你可能把x坐标和顺序索引混淆了。试一个x坐标为10,20,…70的例子,它可能会更明显。谢谢你jwpat7。我真的混淆了。:DY你可能把x坐标和顺序索引混淆了。试一个x坐标为10,20,…70的例子,它就是可能更明显。谢谢jwpat7。我真的搞糊涂了。:d说明书上说你只能把北岸的I城和南岸的I城连接起来。”所以我想我们必须连接到两边的同一个号码。我是否误解了指令原因?如果没有,当我重新检查原始序列Northern Bank>>7 4 3 6 2 1 5 Southern Bank>>5 3 2 4 6 1 7时,我只能连接3,2,1或3,6,1或4,6,1。原始序列是说北城1在x 7.0时只能连接到南城1在x 5.0时,4.0版本的北城2号只能连接到x3.0版本的南城2号,等等。换句话说,原始序列指定了7座可能的桥梁的位置-如图所示。请注意,我的图表中的数字是x位置。城市指数没有显示。谢谢彼得·德里瓦兹。我现在明白了。你的回答真的帮了我很大的忙。说明书上说你只能把北岸的i城和南岸的i城连接起来。“所以我认为我们必须连接到两边的同一个号码。我是否误解了指令原因?如果没有,当我重新检查原始序列Northern Bank>>7 4 3 6 2 1 5 Southern Bank>>5 3 2 4 6 1 7时,我只能连接3,2,1或3,6,1或4,6,1。原始序列是说北城1在x 7.0时只能连接到南城1在x 5.0时,4.0版本的北城2号只能连接到x3.0版本的南城2号,等等。换句话说,原始序列指定了7座可能的桥梁的位置-如图所示。请注意,我的图表中的数字是x位置。城市指数没有显示。谢谢彼得·德里瓦兹。我现在明白了。你的回答对我帮助很大。