輸出1 n的所有全排列

2021-10-12 04:21:08 字數 587 閱讀 3933

#include

#define maxn 20

#include

#include

using

namespace std;

//n個數的全排列等於第乙個位置選x,剩下的位置是n-1個數除去x的全排列,這是遞迴式

//遞迴出口最後乙個位置只有乙個可選

//用for迴圈實現某個位置上1到n的遍歷

//雜湊表記錄某個數當前是否在排列中

//ans陣列用來儲存當前生成的乙個排列

bool hashtable[maxn]=;

vector<

int>ans;

//這裡用到vector比使用陣列更方便,因為不用關注下標的變化

int n;

void

order

(int num)

//num個位置

printf

("\n");

return;}

for(

int i=

1;i<=n;i++)}

}int

main()

生成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 二 可重集 可重集排列注意如果陣列...

生成1 n的排列

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

演算法 生成1 n的排列

在暴力求解法中,我們常常要用上列舉一些簡單內容以便方便獲得解,若要輸出整數n的前n個整數的全排列,則按字典序輸出為 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 從中我們似乎發現了一些規律 先輸出以1開頭的排列,再輸出以2開頭的排列,然後是3 而在以1開頭的排列中,1的後一...