next permutation函式

2022-11-24 16:16:25 字數 781 閱讀 8172

這是一個求一個排序的下一個排列的函式,可以遍歷全排列,要包含標頭檔案,與之相反的還有一個函式prev_permutation();

(1) int 型別的next_permutation

int main()

輸出:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

如果改成 while(next_permutation(a,a+2));

則輸出:

1 2 3

2 1 3

只對前兩個元素進行字典排序

顯然,如果改成 while(next_permutation(a,a+1)); 則只輸出:1 2 3

若排列本來就是最大的了沒有後繼,則next_permutation執行後,會對排列進行字典升序排序,相當於迴圈

int list[3]=;

next_permutation(list,list+3);

cout<

(2) char 型別的next_permutation

int main()

}

int main()

while(next_permutation(ch,ch+strlen(ch),cmp));

}return 0;

}

next permutation

stl提供了兩個用來計算排列組合關係的演算法,分別是next permutation和prev permutation。首先我們必須瞭解什麼是 下一個 排列組合,什麼是 前一個 排列組合。考慮三個字元所組成的序列。這個序列有六個可能的排列組合 abc,acb,bac,bca,cab,cba。這些排列...

Next Permutation

問題 給定一個陣列,輸出對該陣列排序時只比當前陣列大一級的陣列,如果沒有,則輸出從低到高的排序陣列 示例 輸入 1,2,3 輸出 1,3,2 輸入 3,2,1 輸出 1,2,3 輸入 5,5,7 輸出 5,7,5 解決思路 從右到左,固定某個位置,從右到該位置之前的一個位置進行遍歷,如果陣列元素大於...

STL next permutation

next permutation 可以按字典序生成所給區間的全排列。在stl中,除了next permutation 外,還有一個函式prev permutation 兩者都是用來計算排列組合的函式。前者是求出下一個排列組合,而後者是求出上一個排列組合。所謂 下一個 和 上一個 書中舉了一個簡單的例...