a1,…,ana1,…,ana_1, \ldots, a_n000lllaiaia_ibibib_i000lllbibib_ib i O (n 4max(|a1−b1|,…,|an−bn|)max(|a1−b1|,…,|an−bn|)\max(|a_1-b_1|, \ldots, |a_n-b_n|)bibib_iO(nl√4)O(nl4)O(n\sqrt[4]{l}) 老实说,我根本不知道如何开始解决这个问题。在我看来,这似乎是一个动态编程问题,但这位教授说,应该使用贪婪算法解决该问题。如果有人可以给我一点点提示就可以指出正确的方向,那将不胜感激。
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …