组合数学中字典序法C++实现

来源:互联网 发布:剑网三曹雪阳脸型数据 编辑:程序博客网 时间:2024/06/05 02:24

组合数学中字典序法的实现



step1: 

对于排列a[0...n1],找到所有满足a[k]<a[k+1](1<k<n2)的k的最大值,如果这样的k不存在,则说明当前排列已经是a的所有排列中字典序最大者,所有排列输出完毕。 
step2: 
a[k+1...n]中,寻找满足这样条件的元素l,使得在所有a[l]>a[k]的元素中,a[l]取得最小值。也就是说a[l]>a[k],但是小于所有其他大于a[k]的元素。 
step3: 
交换a[l]a[k]
step4: 
对于a[k+1...n]

,反转该区间内元素的顺序。也就是说a[k+1]与a[n]交换,a[k+2]与a[n-1]交换,……,这样就得到了a[1…n]在字典序中的下一个排列


妈的截屏截成狗了,,,,,一群草泥马飞过。。。。。

0 0
原创粉丝点击