假设我们有一个数组 { 1, 1, 2, 2, 3, 3 } 我想在满足这些要求的同时完成所有可能的组合:
- 不要在任何地方复制第一个数组
- 每次迭代都必须只锯切两个元素,例如,如果我们有 112233 我们可以转到 121233 112323 因为只需要一个交换,但不是 332211 因为它需要多个交换
是的,这是可能的,我已经尝试自己编程来检测这样的序列,但我得到了一个古怪的模式,比如(一个表示交换,0 表示未更改的元素):
- 011000
- 001100
- 110000
等等,我找不到任何简单的公式可以让我在算法上迭代每个排列。