2017-09-18 7 views
-2

事前定義された可能性から最良のトリプル(3つの整数のセット)を選択するアルゴリズムを実装する必要があります。詳細に:ベスト・インテグリティ・セットを選択するためのデータ構造とデザイン

  1. として定義列挙クラスは、以下がある:

    enum class myEnum { a6 = 0, a10, a14, a18, a119, a123, a127, a131, a135 }

これらの部材は、トリプル {a6,a10,a14}, {a6, a14, a18}のセットに組み合わせることができます。ここには重要ではない条件のために、わずか11の可能なトリプルがあります。 私はトリプルを選択しなければならない、トリプルの各メンバーのためにいくつかの計算を行い、追加の条件を考慮して最高のトリプルを選択してください。

これらの11個のトリプルに最適なデータ構造とデザインはどれですか?トリプル一つは、「使用中」であるので、計算から除外すべきか計算が(それは関係ありません)ごとに行われ、その結果から除外することができます:

struct a6 { int value; };

typeToChoose possibleTriples = { 

{ 
    a6, a10, a14 
    a6, a10, a18 
    a6, a14, a18 
    a10, a14, a18  
    a119, a123, a127 
    a119, a123, a131 
    a119, a127, a131 
    a123, a127, a131 
    a123, a127, a135 
    a123, a131, a135 
    a127, a131, a135 
} 

さんが言ってみましょうそのが使用中です。 int sumOfValues = a6.value + a10.value + a18.value;

と最低の合計とのトリプル最小選択します。今、私は、フィールド構造のvalueため possibleTriples計算和を反復処理する必要があります。 {a6、a10、a14} == {a14、a10、a6}

+0

私はあなたが望む(非効率的に)行う[mcve]コードを提供し、最適化アドバイスを求めることをお勧めします。それをより良くするために働かせてください。 – Persixty

+0

要件の漠然としたものが与えられ、{a、b、c}と仮定すると、729要素の配列/ベクトルを作成し、テストで反復するだけです。 –

+0

'std :: tuple 'のどれですか? – lisyarus

答えて

1

答えは質問と同じくらい曖昧です。 は一般的に、あなたは最も基本的なアプローチからスタート:

struct Triple { 
    myEnum first, second, third; 
}; 

を今、あなたが達成したいかに応じて、あなたが効果的にカプセル化(プライベートメンバー)を組み込むことにより、クラスに、このような構造体を促進し、さらに抽象化を追加し、アルゴリズム、オーバーロードされた演算子などを操作するための特定のインターフェイス。

関連する問題