クラス番号を入力して優先順位を付けることで、学生がスケジュールを設定できるようにするプログラムを作成しています。学生は 3 から 10 のクラスをプラグインできる必要があり、プログラムは、学生が設定したパラメーターを指定して、20 の「最適な」スケジュールを提供します。ただし、すべてのクラスには、さまざまな量のクラス セクションから選択できます。(たとえば、月曜日/水曜日/金曜日のクラスを 8、10、または 11 に、または火曜日/木曜日のクラスを 11、3、または 5:30 に 1 つのクラスを提供することができます)。これとは別に、学生は任意の数のクラスに参加することを選択できます。これを考えると、利用可能なすべてのカレンダーを生成するアルゴリズムを設定するのに苦労しています。(カレンダーもクレジットによって制限されます)
プログラムが実行されるたびに、2 つの Course インスタンスが作成されます。各 Course オブジェクトには ClassSection インスタンスの ArrayList があり、それぞれに ClassTime インスタンスの ArrayList があります。各 ClassTime インスタンスには、実行する曜日ごとに開始時刻と終了時刻があります。
複数の ClassSection インスタンスを含む Schedule クラスを作成しました。ClassTime がすでに追加されている ClassSection の ClassTime と干渉する ClassSection を追加しようとするか、同じ Course の ClassSection が追加されたときに false を返すメソッドがあります。問題なく追加された場合、メソッドは true を返します。
私の目標は、ArrayList を ArrayList に変換することです。ここで、Calendar ArrayList は、クレジット数を超えることなく、すべての CourseSection インスタンスのすべての可能な順列を持ちます。次に、各カレンダーを適切にランク付けし、そこから続けます.
これらのカレンダーを反復して作成するためのアルゴリズムについて誰か助けてくれませんか? 本当に困っています。
注: 質問するのはこれが初めてです。提供した情報が少なすぎたり多すぎたりした場合は申し訳ありません。