考虑N = 4k
玩家、k
桌子和许多部落,这样每个成员都可以属于一个部落。一个氏族最多可以包含k
玩家。
我们希望组织 3 轮游戏,这样,对于每张正好坐 4 名玩家的桌子,没有 2 名坐在那儿的玩家属于同一个部落,并且在后面的几轮中,没有 2 名坐在那儿的玩家坐在同一个位置表前。所有玩家都玩所有回合。
如果N
可以~80
很大,我们如何有效地做到这一点?
我想到了这个:
for each table T:
repeat until 4 players have been seated at T:
pick a random player X that is not currently seated anywhere
if X has not sat at the same table as anyone currently at T AND
X is not from the same clan as anyone currently at T
seat X at T
break
我不确定这是否会一直完成,或者即使有有效的分配它也会卡住。即使这有效,还有更好的方法吗?