您的位置:首页 > 其它

字典序全排列

2017-07-10 16:22 741 查看
字典序法的描述如下:

设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj−1pjpj+1......pk−1pkpk+1......pn

从排列的右端开始,找出第一个比右边字符小的字符的序号j(j从左端开始计算),即j=max{i|pi<pi+1}

在pj的右边的字符中,找出所有比pj大的字符中最小的字符pk,即k=max{i|pi>pj}(右边的字符从右至左是递增的,因此k是所有大于pj的字符中序号最大者)

对换pj,pk

再将pj+1......pk−1pkpk+1pn倒转得到排列p′′=p1p2.....pj−1pjpn.....pk+1pkpk−1.....pj+1,这就是排列p的下一个下一个排列。

例如839647521是数字1~9的一个排列。从它生成下一个排列的步骤如下:

自右至左找出排列中第一个比右边数字小的数字4 839647521

在该数字后的数字中找出比4大的数中最小的一个5 839647521

将5与4交换 839657421

将7421倒转 839651247

所以839647521的下一个排列是839651247。

839651247的下一个排列是839651274。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: