私は次の問題を解決するための最良の方法を見つけようとしています。最善の方法で、私はそれほど複雑ではないことを意味します。
入力として、次のようなタプル(start、length)のリスト:
[(0,5),(0,1),(1,9),(5,5),(5,7),(10,1)]
各要素は、開始と長さ(5,6,7,8,9,10,11)
によってシーケンスを再プリセットします。たとえば、(5,7)は、シーケンス( 5で始まる7つの要素のリスト)と同等です。タプルはstart
要素によってソートされていると見なすことができます。
出力は、最長の連続シーケンスを表すタプルの重複しない組み合わせを返す必要があります。つまり、ソリューションは、オーバーラップやギャップのない範囲のサブセットであり、可能な限り最長です。ただし、複数存在する可能性があります。
たとえば、与えられた入力の場合、解決策は次のとおりです。
[(0,5),(5,7)]
に相当(0,1,2,3,4,5,6,7,8,9,10,11)
この問題を解決するための最良のアプローチをバックトラックしていますか?
私は人々が提案できるさまざまなアプローチに興味があります。
また、誰かがこの問題または同様の別の問題の正式な参照を知っている場合は、参照を取得したいと思います。
ところで-これは宿題ではありません。
編集
いくつかの間違いを避けるために、これは予想される動作の別の例です
[(0,1),(1,7),(3,20),(8,5)]
正解のような入力の場合、[(3,20)]
長さ20の(3,4,5、..、22)と同等です。受け取った回答の一部は[(0,1),(1,7),(8,5)]
(0,1,2、...、11,12)と同等になります。正解として。しかし、はより短いため、この最後の答えは正しくありません[(3,20)]
。