この 2 つのパスに共通のノードがなく、この 2 つのパスの長さの乗算が最大になるように、n ノードを持つツリーで 2 つのパスを見つけたいと考えています。誰でもこの問題を解決する方法を教えてくれますか?
質問する
782 次
2 に答える
2
まず、再帰的な手順を使用して、考えられるすべての一意のパスのリストを生成します。
最終的にはm個の可能なパスになります。
次に、mxm要素の配列を設定します。
m個のパスのすべてを他のすべてのm-1パスと一緒にチェックし、それぞれの長さの乗算を配列に格納します。その際、2つのパスに共通のノードがあるかどうかを確認してください。もしそうなら、0を保存します。
3番目に、最大値を持つ要素のmxm配列を確認します。
他に何ができますか?これは非常に力強いものですが、ツリーのプロパティに関する情報がこれ以上わからない場合は、これが唯一の方法です。
于 2013-01-06T21:05:39.690 に答える
1
いくつかの考え。合計がnになる2つの値aとbがある場合、a*bの最大値はa==bのときです(簡単にするために、nは偶数であると仮定します)。n個のノードすべてを通過するパスがある場合は、それを2つのほぼ等しい部分に分割します。偶数nのこのようなグラフの場合、答えは(n ^ 2)/ 4になり、奇数nの場合、答えは(n-1)/ 2 *(n + 1)/ 2 =(n ^ 2 --1)/4になります。 n個のノードすべてを通過するパスがない場合は、他の手法を使用する必要があります。ただし、上限は上記のとおりです。
于 2013-01-07T00:23:29.307 に答える