生成1 n的排列的三種方法

2021-07-24 13:12:44 字數 543 閱讀 8242

#include 

#include

const

int maxn = 10;

bool used[maxn + 1];

int n, a[maxn + 1];

void search(int i)

for (int j = 1; j <= n; j++)

}}void print_permutation(int n, int *a, int cur) //用*a傳a陣列

else

for (int i = 1; i <= n; i++) //嘗試在a[cur]中填各種整數i

}}int main()

while (std::next_permutation(a + 1, a + n + 1)); //如果迴圈完了就會返回乙個false

//next_permutation傳的引數和sort一樣

}

這三種隨便寫一種就行

【**其中之一來自紫書,其他的來自menci,注釋是我自己加的啦(:з」∠)】

生成1 n的排列

摘自 演算法競賽入門經典 按字典序生成1 n的全排列。偽 void print permutation 序列a,集合s if s為空 輸出序列a else 按從小到大的順序依次考慮s的每個元素v print permutation 在a的末尾新增v後得到的新序列,s void print permu...

生成排列的三種方法

leetcode.permutations 1.遞迴,若初始陣列有序,則生成的排列字典序有序 class solution private vector res vector vec,vis int n void f vector vis,vector nums for int i 0 iif vi...

生成1 n的全排列

一 不可重集 includeusing namespace std const int maxn 1000 5 void print n int n,int a,int cur a是儲存全排列的陣列,cur是插入的位置 if cur n for int i 0 i 二 可重集 可重集排列注意如果陣列...