순열(permutation) : 서로 다른 n개의 원소 중에서, r개를 뽑아서 나열한 것
기호 P로 표시
핵심
1. 1 2 3 4 에서 2개를뽑는 순열은 4P2= 4*3=12개
2. 정의에 따라 (1,1),(2,2),(3,3),(4,4)는 포함X
3. 순열은 수의 순서가 상관이 있으므로, (1,2)과 (2,1)는 다름.
*조합: 순서가 상관 없으므로 (1,2)과 (2,1)는 같음
4. 백트래킹 기법을 사용하여 구현한다.
구현: 1,2,3,4 중 2개를 뽑는 순열
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include<iostream> #include<vector> using namespace std; int arr[4] = { 1,2,3,4}; vector<int>v; bool check[4]; void dfs(int cnt) { if (cnt == 2) { for (int i = 0; i < v.size(); i++) { cout << v[i] << " "; } cout << endl; return; } for (int i = 0; i < 4; i++) { if (check[i] == true)continue; check[i] = true; v.push_back(arr[i]); dfs(cnt + 1); v.pop_back(); check[i] = false; } } int main() { dfs(0); } | cs |
결과
4P2= 12개
'알고리즘 > 순열과 조합' 카테고리의 다른 글
[순열과 조합] 중복순열 (0) | 2020.02.07 |
---|---|
[순열과 조합] 중복조합 (0) | 2020.02.07 |
[순열과 조합] 조합 (0) | 2020.02.07 |