uva10570(枚举基准,贪心) 输入一个1至n的排列(n<=500),每次可以交换两个整数,用最小的交换次数把排列变成1至n的一个环状排列. 首先用\(O(n)\)的时间枚举一个排列,接着问题就转换为了用最少的交换次数将一个排列S变成有序的. 我们可以构造出一个置换E,表示S到1到n的升序排列的置换.如果把E写成若干个轮换连接起来的形式.不难发现两条规律: 要将一个轮换中的元素用两两交换的方式归位,最少需要轮换长度-1次. 如果交换的两个元素不是按照轮换顺序来的,那么会导致循环节混在一起.答…