如何获取给定排列的不相交循环列表?(python)
我有一个字典,比如说:{1:3, 2:2, 3:1}
。我需要得到这个排列的一个不相交的循环列表:[[1,3], [2]]
。
我知道怎么得到所有的排列,但是我不知道怎么把已经有的排列删掉。对于我的例子,我得到的是:[[1,3], [2], [3,1]]
。
1 个回答
1
显而易见的解决办法是把你的循环表示标准化,从循环中最小的元素开始:
min_index = cycle.index(min(cycle))
canonical = cycle[min_index:] + cycle[:min_index]
根据你获取循环的方式,直接生成标准化的表示可能会更有效率。