📜  LIS的变化| DP-21

📅  最后修改于: 2021-05-06 18:49:15             🧑  作者: Mango

在本文中,我们讨论了最长子序列增长问题的动态编程解决方案,在本文中,我们讨论了O(nLogn)解决方案。以下是标准LIS问题的常见问题解答。

1.建筑桥梁:考虑一个二维地图,其中一条水平河流穿过其中心。南岸有n个城市的x坐标为a(1)…a(n),北岸有n个城市的x坐标为b(1)…b(n)。您希望通过桥梁连接尽可能多的南北对城市,这样就不会有两座桥梁交叉。连接城市时,只能将北岸的城市i连接到南岸的城市i。

8     1     4     3     5     2     6     7  

--------------------------------------------
  
--------------------------------------------
1     2     3     4     5     6     7     8

资料来源:动态编程实践问题。该链接也为该问题提供了详细说明的解决方案。
此问题的解决方案已在此处发布。

2.最大总和增加子序列:给定n个正整数的数组。编写程序以找到给定数组的最大总和子序列,以使子序列中的整数按升序排序。例如,如果输入为{1、101、2、3、100、4、5},则输出应为{1、2、3、100}。此问题的解决方案已在此处发布。

3.最长的链条您将获得成对的数字。在一对中,第一个数字相对于第二个数字较小。假设您有两个集合(a,b)和(c,d),如果b

4.盒子堆叠您会得到一组n种类型的矩形3-D盒子,其中第i个盒子的高度为h(i),宽度w(i)和深度d(i)(所有实数)。您想创建一个尽可能高的盒子堆,但是如果下部盒子的2D底部的尺寸分别严格大于2个盒子的尺寸,则只能将一个盒子堆叠在另一个盒子的顶部。较高的盒子的D底座。当然,您可以旋转一个盒子,以便任何一侧都可以作为盒子的基础。也可以使用相同类型的盒子的多个实例。
资料来源:动态编程实践问题。该链接也为该问题提供了详细说明的解决方案。