次の問題に対する最善のアプローチは何かを理解しようとしています。
地図上にルートを描く必要があります。選択したい色の注文プールがあります。最初の色が利用可能であれば (まだ使用されていません)、その色を使用したいと考えています。最初の色が使用されたら、2 番目の色を使用したい、というように。また、描いたルートをグループ化することもできます。そのため、グループが同じ場合、それらは同じ色を共有する場合があります。
次に例を示します。
カラーリスト (注文事項): ブルー、レッド、グリーン、イエロー....
- 最初のルートはグループ A です。ブルーが利用可能です: BLUE
- 2 番目のルートはグループ B です。青は利用できません。赤が利用可能: 赤
- 3 番目のルートはグループ A です。グループ A は既に Blue を使用しているため、次のように使用します: BLUE
- 2 番目のルートは削除されます
- 4 番目のルートはグループ C です。ブルーは利用できません。赤が利用可能: 赤
- 5 番目のルートはグループ D です。青と赤は利用できません。グリーンが利用可能: GREEN
このタイプのシステムに最適なデータ構造は何かについて議論しています。色とその順序、どのグループが色を「チェックアウト」したか、いつ色を利用可能な選択肢のプールに「解放」できるかを維持する必要があります。
助言がありますか?
編集:
私の現在の戦略は、2 つのデータ構造を使用することです。最初は、キーがグループ名で、値が使用されている色である Dictionary になるため、現在誰がどの色を使用しているかがわかります。2 番目の構造は、使用可能な色の順序を維持するためのスタックになります。
そのため、新しいルートを追加したいときは、まず辞書にアクセスして、グループ名が存在するかどうかを確認します。そうであれば、その割り当てられた色を使用します。そうでない場合は、スタックから次に使用可能な色を取得し、その組み合わせをディクショナリに追加します。
これに関する問題は、色を使用して各グループにいくつのルートがあるかのカウントを維持しないことです。では、グループ A に Blue を使用する 2 つのルートがあるとします。ルートを削除します。まだ青を使用している別のグループ A ルートがあるかどうかを確認するにはどうすればよいですか? 青をスタックに戻すことができるかどうかはわかりません。