algorithm - 这是什么贪婪或动态编程方法?

标签 algorithm dynamic-programming greedy

我们有一个实数序列。所有数字都是唯一的。我们希望通过更改其中一些值来获得一个升序序列。我们可以更改任意数字。如何找到最佳算法来确定进行此序列所需的最少更改次数? 我们可以使用贪心或动态规划方法。

最佳答案

首先找到最长的递增子序列 http://en.wikipedia.org/wiki/Longest_increasing_subsequence

然后改变所有不属于这个子序列的数字以符合规则

(证明:如果我们改变较少的数字并获得升序,那么没有改变的数字最初形成递增子序列,长度超过“最长”)

关于algorithm - 这是什么贪婪或动态编程方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886734/

相关文章:

c++ - 迭代地编写递归代码

c# - C# 正则表达式中的贪心、非贪心、全贪心匹配

algorithm - 到达目的地的最少停留

python - 在随机列表生成中强制执行 "no 2 same contiguous elements"

c++ - 递归函数的时间复杂度,其中递归减少了大小

python - Needleman-Wunsch 算法动态规划实现中的回溯

algorithm - 倒霉岛动态规划

c++ - OpenMP 实现比串行实现慢

algorithm - 对具有 O(n*Log(K)) 复杂度的近排序数组进行排序

algorithm - 如果 f(n) ∈ ω(g(n)),则 2 ^ f(n) ∈ ω(2 ^ g(n) )