輸出1到n的全排列 (字典序) 僞代碼: void print_per(序列A, 集合S){ if(S爲空){ 輸出序列A }else{ 按照從小到大的順序考慮S中的每一個元素V print_per(在A的末尾添加V獲得的新序列, S-{V}); } } void print_per(int n, int cur, int* a){ if(n == cur) //遞歸邊界 for(i=0; i<n; i++) cout << a[i] << " "; else{ for(i=1; i<=n; i++){ //嘗試在a[cur]中填各類整數i bool ok = true; for(j=0; j<cur && ok; j++) if(i == a[j]) //i已經在a[0] 到 a[cur]中出現過,則不能再選 ok = false; if(ok){ a[cur] = i; print_per(n, cur+1, a); //遞歸調用 } } } }