6!/(4!*2!)=15
。我的问题是要找到一种有效的方法来计算他们选择坐的位置。所谓位置,指的是以下内容:
BBGGGG - possible position #1
BGBGGG - possible position #2
BGGBGG - possible position #3
BGGGBG - possible position #4
BGGGGB - possible position #5
GBBGGG - possible position #6
GBGBGG - possible position #7
GBGGBG - possible position #8
GBGGGB - possible position #9
GGBBGG - possible position #10
GGBGBG - possible position #11
GGBGGB - possible position #12
GGGBBG - possible position #13
GGGBGB - possible position #14
GGGGBB - possible position #15
例如,他们选择了位置
GBBGGG
...目前我计算该位置(#6)的解决方案是循环所有可能的位置,并将每个位置与所选顺序进行比较,如果它们相等,则返回当前位置编号。在上面的示例范围内,循环15个可能的组合并没有什么大问题,但是如果您增加椅子和人数的范围,这种方法远非高效。
有没有任何公式或更有效的方法可以用来确定所选可能性的位置?请随意使用任何编程语言进行示例。
更新:我确切地知道房间里有多少把椅子、男孩和女孩。唯一的问题是找到他们选择坐的位置编号。
我在示例中使用的排序仅用于更好的可读性。欢迎使用任何类型的排序回答。