我想在具有n个节点的树中找到两条路径,因此这两条路径不具有任何公共节点,并且这两条路径的长度的乘法变得最大。 任何人都可以帮我解决这个问题?
答案 0 :(得分:2)
首先,使用递归过程生成每个可能的唯一路径的列表。
你最终会有m条可能的路径。
其次,设置一个m x m个元素的数组。
使用所有其他m-1路径检查m个路径中的每一个,并将相应长度的乘法存储到数组中。这样做检查两条路径是否有共同的节点。如果存储0。
第三步,检查m x m数组中具有最大值的元素。
你还能做什么?这是非常强力的,但如果没有关于树属性的更多信息,这是唯一的方法。
答案 1 :(得分:1)
一些想法。如果有两个值a和b加起来为n,则a * b的最大值是a == b时(为简单起见假设n是偶数)。 如果有一条路径通过所有n个节点,则将其切割成两个几乎相等的部分。对于偶数n的这样的图,答案将是(n ^ 2)/ 4并且对于奇数n,它将是(n-1)/ 2 *(n + 1)/ 2 =(n ^ 2-1)/ 4。 如果没有路径通过所有n个节点,则必须使用其他一些技术。但是上限是如上所述。