0

組み合わせ論の問題を解決しようとしています。簡単そうに見えますが、問題が発生しています。

最大でX台のテーブルがあり、テーブルにN人が座る場合、各テーブルには1〜Nの座席があり、長方形のテーブルの片側にしか座ることができません(したがって、人の座る順序が重要です)。

1からKテーブルまでの座席のすべての分布を計算できるコードを作成したいと思います。

たとえば、12人と1つのテーブルがある場合、479001600の座席の方法があります(計算は簡単ですが、Factorial of 12を使用しました)。

しかし、私が12人と3つのテーブルを持っている場合、私は4390848000の座席の方法を持っています。さまざまな解決策を試しましたが、正しい解決策を見つけることができませんでした。

私は12を3に分割しようとしました、そしてo結果の階乗を使用します(それは機能しませんでした)、私は12を使用しようとしました!* 3(それも機能しませんでした)。

誰かが私が使用できるアルゴリズムのヒントを教えてもらえますか?

4

2 に答える 2

3

LahNumbersに関する記事を読んでください。役立つはずです。

于 2010-06-03T10:19:53.063 に答える
2

4,390,848,000は正解ではないと思います(空席を数える場合)。

N人をN席のXテーブルに配置する方法の数は、N人を(N * X)席の1テーブルに配置することに相当します。結果は非常に明白です:(NXはN×Nを選択します!)。

  • NXは、N=順列を考慮せずにN人をNXシートに配置する方法の数を選択します。
  • N!=これらのN人の順列の数。

例えば

[a b|_ _]  [a _|b _]  [a _|_ b] 
[_ a|b _]  [_ a|_ b]  [b a|_ _]
[_ _|a b]  [b _|a _]  [_ b|a _]  = 4 choose 2 * 2! = 12.
[b _|_ a]  [_ b|_ a]  [_ _|b a]

しかし(36は12×12を選択してください!)=599,555,620,984,320,000。

テーブルが同一であっても(係数3!= 6を削除)、結果99,925,936,830,720,000は4,390,848,000よりはるかに大きくなります。

于 2010-06-03T10:11:41.457 に答える