题目链接:uva 11077 - Find the Permutations
题目大意:给定一个1~n的排序,可以通过一系列的交换变成1,2,…,n,
给定n和k,统计有多少个排列至少需要交换k次才能变成有序的序列。
解题思路:给定一个序列P,可以将该序列看做是一个置换,从有序序列,开始,需要多少次回到有序序列。将P的循环分解,循环长度为1的需要0次,长度为2的需要1次,循环长度为n的需要n-1次,如果P的长度为N,有x个不相干的循环,那么总的需要的交换即为N-x。
所以有状态f(i,j),即为长度i,j个循环的寻列总数,f(i,j)=f(i−1,j−1)∗(i−1)+f(i−1,j)
#i......
阅读全文