2016-12-18 9 views
-2

PHPで3日間100人を100席に割り当てたい。席に人を割り当てる

VIP席は10席、classA席は40席、classB席は50席です。 5人がVIPチケットを、45人が「classA」チケットを、50人が「classB」チケットを持っています。

次の規則が適用されます

-Persons with a VIP ticket can only be seated on VIP seats 
-Persons with a classA ticket may be seated on VIP seats 
-Persons with a classB ticket can only be seated on ClassB seats 
and seats should change for each day 

この問題の(おそらく擬似コードで)任意のアルゴリズムがありますか?

+1

あなたはこれまで考えていたことを見てみましょう。 – Federkun

+0

まず、チケットで "foreach"ループを試しますが、VIPシートはcalssAチケット –

+0

で3ループ、VIPシートで1枚、同じ日にVIPとclassAチケット –

答えて

1

すべてのclassBチケットはclassBの座席に割り当てられます。最初の日に順番に割り当てると、翌日に右にシフトし、右端の人を左端に置いて、最後の人に同じことを繰り返します。

VIPチケットの場合、最初の5つのVIPシートを使用し、5つの座席に同じシフト方法を適用します。

classAのチケットでは、5つの幸運なチケットを選択します。3日間すべてVIPの座席が得られます。残りの5つのVIP座席に5つのチケットをシフトする方法を適用します。

他の40種類のA種の航空券がclassAの座席に置かれ、再び翌日にそれらをシフトします。

関連する問題