-1

学校のプロジェクトで、c# でプログラムを作成する必要があります。私は正しい軌道に乗っていると思いますが、この問題に固執しました。

プログラムのこのセクションでは、バックトラッキング アルゴリズムを作成する必要があります。私はクラス(英語、物理学、数学など)を持っており、すべてのクラスは特定の時間続きます。(たとえば、1h、2h、3h、5h など)。また、その日に学校で過ごすことができる時間を示す maxClassHours があります。アルゴリズムは、この maxClassHours を満たすクラスのすべての可能な組み合わせを可能な限り収集する必要があります。

特定のクラスに一度しか座れないことが重要です。そのため、数学の授業は 1 つしか受けられません。

たとえば、maxClassHours が 5 であるため、5 時間、別のクラスに座って過ごすことができます。

これらのクラスがあるとしましょう:

  • 数学 - 2時間
  • 物理学 - 1時間
  • 音楽 - 2時間
  • ダンス - 5h
  • 体育 - 3時間
  • 地理 - 5時間
  • 英語 - 3時間
  • フランス語 - 1時間
  • サイエンス - 7h
  • アート - 1時間

目標は、この 5 時間を満たすすべての可能な組み合わせを (バックトラック アルゴリズムを使用して) 見つけることです。

意味があるといいのですが...助けてくれてありがとう。

編集: バックトラッキング アルゴリズムをこの問題に適用する方法を理解したいと思います。

EDIT2: 何時間も作業を試みましたが、大きな進歩を遂げることができませんでした。そのため、助けを求めています...

4

1 に答える 1

2

次の思考プロセスを試してください。

  1. クラスを選択
  2. 合計時間はまだ最大時間より少ないですか?
    • その場合は、別のクラスを選択してください
    • そうでない場合は、最後に追加されたクラスを削除し、その場所に別のクラスを追加します

例えば:

最大は 5 時間です

| Class List                       | Total Time |
|----------------------------------|------------|
| Math                             | 2h         |
| Math, Physics                    | 3h         |
| Math, Physics, Music             | 5h (save)  |
| Math, Physics, Dance             | 8h         |
| Math, Physics, P.E.              | 6h         |
| Math, Physics, Geography         | 8h         |
| Math, Physics, English           | 6h         |
| Math, Physics, French            | 4h         |
| Math, Physics, French, Science   | 11h        |
| Math, Physics, French, Art       | 5h (save)  |
| Math, Music                      | 4h         |
| ...                              | ...        |
于 2016-04-29T14:47:47.527 に答える