1.六個數裡取所有三個數的全排列按字典序輸出
法一:我記得比賽時我用的是二維數組,每一維先排序,竟然立馬水過了,後來我想要是數多了就很麻煩,于是有了下面的方法。
法二:
2.求字典序的第k的排列
參見POJ 1037(不隻是簡單地求第幾個排列),下面的方法都逾時(應該是WA)了;參加黑書P257,也可以求1開頭的共幾個排列,這樣逼近,不過若是位數較多,數組開不了
法一:
3.求上一個和下一個排列
一.上一個排列
普通算法沒找到,可以直接prev_permutation()
二.下一個排列
a.普通算法
從最後一位 找到第一個非遞減的位數,假設最末尾連續的遞減位數為k;例如12354 54是遞減的 是以找到3 k=2;然後将這一位與最後一位互換 例如12354 換成12453;那後k位是降序序的 ;是以将最後k位改成升序即可。
b.