全排列的三種實現

2021-10-04 03:51:22 字數 1632 閱讀 7653

題目描述

生成由1至n個數的全排列。

輸入

輸入包含多組樣例,每組樣例輸入乙個整數n(1≤n≤9)。

輸出

按照字典序反序輸出,每個數值之間用空格隔開。每個排列單獨佔一行。

}}逆字典序

#

include

#include

#include

int num[10]

;int visited[10]

;int n,t;

void

dfs(

int x)

int i;

for(i=n-

1;i>=

0;i--)}

}int

main()

}

非字典序

}有重複數字

class

solution

void

swap

(int

&a,int

&b)void

perm

(vector<

int> num,

int k,

int m)

else}}

bool

isswap

(vector<

int> num,

int begin,

int end)

};

是否可以交換,就是看是交換的元素和前面的那些元素有沒有重

c 實現全排列的三種方式

include include include include using namespace std const int maxn 10 bool visit maxn 判斷某個元素是否被訪問過 char sequence maxn 存放找到的全排列 void getpermutation str...

全排列的三種寫法

給定n個不同的數,要求生成這n個數的全排列!解法1 遞迴思想,首先選定第乙個數 有n種不同的選擇方式 然後對剩下的n 1個數進行全排列 根據此步驟,對剩下n 1數的全排列進行遞迴。void permutation vector ivec,int level for int i level i ive...

總結 三種全排列演算法

1 遞迴演算法 演算法書上有詳細的解釋,複製如下 設r 是要進行排列的n個元素,ri r 集x中元素的全排列記為perm x ri perm x 表示在全排列perm x 的每乙個排列前加上字首ri得到的排列.r的全排列可歸納定義如下 當n 1時,perm r r是集合r中唯一的元素.當n 1時,p...