-
swap(a[i],a[i+1])
一定能生成所有排列,先交换使得第一个固定,再使得第二个…… -
题目中的操作就是
swap(a[i],a[i+1]),swap(a[i],a[i-1])
,考虑 a 中没有相同的数的话,逆序对奇偶性不变,然后可以类似 1 的固定方法,因为奇偶性不变,自然最后 2 个归位。
swap(a[i],a[i+1])
一定能生成所有排列,先交换使得第一个固定,再使得第二个……
题目中的操作就是 swap(a[i],a[i+1]),swap(a[i],a[i-1])
,考虑 a 中没有相同的数的话,逆序对奇偶性不变,然后可以类似 1 的固定方法,因为奇偶性不变,自然最后 2 个归位。
swap(a[i],a[i+1]),swap(a[i],a[i-1])
能生成所有逆序对奇偶性与 a 相同的排列,假如 a 中有相同的元素,那么可以改变奇偶性,也就是能生成所有排列。