作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在学习如何在我的算法课上寻找最优解,其中一个主题是关于寻找问题中的最优子结构。
到目前为止,我对它的理解是,我们看看是否可以为大小为 n 的问题找到最优解。如果可以,那么我们将问题的规模增加 1,因此它是 n+1。如果n+1的最优解包括n的整个最优解加上+1引入的新解,则我们有最优子结构。
我得到了一个使用最优子结构在给定一组数字的情况下找到最长递增子序列的示例。这显示在此处的 powerpoint 幻灯片上:
谁能给我解释一下幻灯片底部的符号,并证明这个问题可以用最优子结构来解决?
最佳答案
S
中当前索引 i
左侧的一组位置 j
使得 S j 小于 Si。换句话说,元素 Sj 和 Si 是递增顺序,即使它们之间可能还有其他元素。所有这些都是编写这六行伪代码的漫长过程:
L[0] = 1
for i = 1..N
L[i] = 1
for j = i..0
if S[i] > S[j] // Member of Lower(i) ?
L[i] = MAX(L[i], L[j]+1)
关于algorithm - 我可以解释一下如何使用最佳子结构来找到这张幻灯片中的最长递增子序列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074402/
我是一名优秀的程序员,十分优秀!