n个元素排成一圈的问题简称为队列环排。因为一个环形的队列没有首尾之分,故不能直接采用队列直排的办法。当然,经过仔细分析之后,可以发现:直排和环排的差异仅仅在于:
- 环排没有首尾之分;
- n个元素的环排等价于n+1个元素且首尾相同的直排队列;
理解了这两点差异之后,就可以针对这些差异之处进行处理,具体如下:
n+1个元素且首尾相同的直排队列,若将首尾元素捆绑打包,则等价于n个元素的队列,又因为首尾元素相同,因此包括内部的组合数为1,那么n+1个元素且首尾相同的直排队列的组合数为:
有因为环排没有首尾元素之分,即首元素在第1个位置、第2个位置...只要元素之间相对位置关系不变,都是同一个组合。再采用除法原理进行消序则可以得到:
故n个元素环排的算法为