排列的字典序問題

2021-06-28 12:56:36 字數 425 閱讀 4648

問題描述:n個元素共有n!個不同的排列。將這n個元素按照字典序排列

可以從0編號,直至n!-1。例如,當n=3時,6個不同排列的字典序值為:

0    1    2    3    4    5

123 132  213  231  312  321

程式設計任務:給定n以及n個元素的乙個排列,計算出這個排列的字典序值;

給定乙個字典序列,計算出該序列按字典序排列的下乙個排列。

#includeint mul(int t)//階乘

void main()

} //選出j+1至n-1位中比j位數字大且之中最小的那個數,並與第j位交換

int minindex=j+1;

for(i=j+1;inum[j])

if(minindexnum[k+1])

for(i=0;i

全排列 字典序排列

include includeusing namespace std define dig num 4 void cal int str int first int last cout endl if first last bool get f l int list int former int l...

字典序全排列

思路 從左向右找到不符合遞增規律的第乙個數,比如1,2,5,4,3中的這個數就是2,將其與其右面遞增序列中的比他大的最小數,比如在前面例子中的3互換,得到1,3,5,4,2,最後,將該數右邊的遞增序列排序,得到1,3,2,4,5即可。上面這個是求某乙個數的下乙個排列,而全排列只需按這個思路,將初始陣...

字典序全排列

給出正整數n,則1 n這n個數可以構成n!種排列,把這些排列按照從小到大的順序 字典順序 列出,如n 3時,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1 這6個排列。字典序演算法如下 假設這n個數的某乙個排列為 p p1 p2 p3.pj 1 pj pj 1.pk 1 ...