日付範囲のセットを計算するための正しいアルゴリズムを試してみるのに問題があります。重複する日付範囲を計算する際の問題
基本的には、順序付けられていない日付範囲のリスト(開始時刻と終了時刻の配列を含むリスト)があり、重複していない時間帯を含まないようにこのリストを統合したいと思います。
基本的に2つの日付の範囲統合する:
if start1 <= end2 and start2 <= end1 //Indicates overlap
if start2 < start1 //put the smallest time in start1
start1 = start2
endif
if end2 > end1 //put the highest time in end1
end1 = end2
endif
endif
をこれには2つの日付回に参加します。
すべての値を反復するときにぶつかり合ってしまい、エンドリストには重複しない値しか含まれていません。
私の機能的で再帰的なプログラミングは少し錆びていて、どんな助けでも歓迎されます。
http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844には、これを説明する解決策が含まれています(最適化対象によって異なりますが、それ..)。 FPで実装するのは非常に簡単でなければなりません –
あなたは私に彼の正しい方向を教えてくれるかもしれません。 – emt14
私は貪欲なアルゴリズムのセクションの冒頭にあると思いますが(わかりませんが)リストを最初にソートする必要があります。 –