我们有一个包含 Sub Select_Range()
Dim Fm As Range, Av As Range, rng As Range, rngEnd As Range
Dim s As String, x
s = "February 2017 (IN/OUT)"
Set Fm = Rows(8).Find(s, LookIn:=xlValues)
If Not Fm Is Nothing Then
Set Av = Fm.MergeArea
Set rng = Av.Offset(3).Resize(, Av.Columns.Count)
Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)
rngEnd.Select
End If
个节点的树,我们需要找到n (2 <= n <= 1000)
不同的顶点,以便通过所有这些顶点的路径具有最大长度。
注意:
k (1 <= k <= 100 and k <= n - 1)
开始,也在顶点1
处完成。1
。我们假设我们有以下带0 <= w <= 100000
个顶点的树:
我们需要找到n = 5
个顶点,它们将为我们提供最长的路径。
对于此树,最大路径如下:
1⟶5⟶2⟶4⟶1
总长度为k = 3
因此,对于该特定树,我们必须打印13 + 18 + 10 + 5 = 46
作为结果。
我想出了一个类似贪婪/ dp的解决方案
首先,我们解决46
的问题,并在链表k = 1
中记住此解决方案。之后,我们尝试通过尝试所有剩余的1 -> v -> 1
顶点并将其插入当前路径k = 2
和n - 2
来解决1 -> u -> v -> 1
的问题。在浏览了所有顶点之后,我们选择了给出最佳结果的顶点。然后我们继续解决1 -> v -> u -> 1
。
问题是看起来this solution不正确,因为它未通过this problem的测试。
我不能证明我的解决方案是正确的,我不能反驳它。我所做的就是生成数以百万计的不同随机树,在所有这些情况下,我的聪明解决方案都与强力解决方案相匹配。
现在我所有的努力都是为了产生一个反方法,我的方法会失败,但如果它是正确的,我很高兴看到为什么它是正确的。