您的位置:首页 > 其它

查找整数组成字符串的下一个字符串

2015-08-24 22:10 211 查看
一般而言,设P是[1,n]的一个全排列。

      

P=P1P2…Pn=P1P2…Pj-1PjPj+1…Pk-1PkPk+1…Pn    

find:  j=max{i|Pi<Pi+1}

    k=max{i|Pi>Pj}      

1, 对换Pj,Pk,

      

2, 将Pj+1…Pk-1PjPk+1…Pn翻转

P’= P1P2…Pj-1PkPn…Pk+1PjPk-1…Pj+1即P的下一个

 

 

【例】 如何得到346987521的下一个
1,从尾部往前找第一个P(i-1) < P(i)的位置
3 4 6 <- 9 <- 8 <- 7 <- 5 <- 2 <- 1
最终找到6是第一个变小的数字,记录下6的位置i-1
2,从i位置往后找到最后一个大于6的数
3 4 6 -> 9 -> 8 -> 7 5 2 1
最终找到7的位置,记录位置为m
3,交换位置i-1和m的值
3 4 7 9 8 6 5 2 1
4,倒序i位置后的所有数据
3 4 7 1 2 5 6 8 9
则347125689为346987521的下一个排列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: