-1

タスクの可能なすべてのケースを組み合わせてカウントする必要があります。そのために木を作りたい。いくつかのジョブがあり、各ジョブにはいくつかのサブジョブがあります。仕事をするために利用できる多くのエージェントがあります。ジョブ 1 サブジョブ 1 がエージェント 1 または 2 によって実行される場合、ジョブ 1 サブジョブ 2 はいずれかのエージェントによって実行されるとします。そして、ジョブ 2 が開始されます。等々。ノードはさまざまであり、子ノードの数もさまざまなレベルで変化するため、私の質問は次のとおりです。

  1. 同じものを実装するのに最適なデータ構造は何ですか?

  2. あなたが推奨したデータ構造を使用してツリーをたどる最良の方法は何ですか?

私はコーディングに慣れていないので、抽象的なアドバイスだけでなく、具体的な C++/Java の例または Web ソースも提供してください。

編集:

私が考えているツリーのフローチャートを参照してください。

ここに画像の説明を入力

4

1 に答える 1

1

うーん、ツリーが要件に最適なデータ構造だとは思いません。のをお勧めしstd::vectorますJobs。それぞれJobに次のコンテナが必要です。subjobs

スケジュールは、ツリーよりもはるかに簡単にベクトルを反復処理できます。

編集1:コード

class Subjob;
class Job
{
  std::vector<Subjob> other_jobs;
};

std::vector<Job> task_container;
于 2015-01-28T19:00:08.693 に答える