C++ 회귀를 이용한 순열(permutation) 구현.
[ 코 드 ]
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> result;
vector<int> v = { 1,2,3,4 };
int len = v.size();
bool choose[4];
vector<int> temp;
void ser( int k) {
if (k == len) {
result.push_back(temp);
}
else {
for (int i = 0; i < len; i++) {
if (choose[i]) continue;
choose[i] = true;
temp.push_back(v[i]);
ser(k + 1);
temp.pop_back();
choose[i] = false;
}
}
}
int main() {
ser(0);
for (int i = 0; i < result.size(); i++) {
for (int k = 0; k < result[i].size(); k++) {
cout << result[i][k] << " ";
}
cout << "\n";
}
}
7라인 > 결과 값들을 저장할 2차원 vector
8라인 > vector<int> v : 순열을 실행할 값들
9라인 > int len : 값들의 개수
10라인 > len만큼의 크기를 갖는 bool 배열
[ 결 과 ]
'C++ > Algorithm' 카테고리의 다른 글
C++ 제곱근 구하기, n승 값 구하기 : sqrt(), pow() (0) | 2020.01.30 |
---|---|
C++ 소수 찾기, 검사하기 [에라토스테네스의 체] (0) | 2020.01.29 |
C++ #include <bits/stdc++.h> 헤더 사용하기 (0) | 2020.01.28 |
C++ 최대공약수/최소공배수 - 유클리드 호제법 (0) | 2020.01.24 |
C++ 조합(Combination) 회귀를 이용 (2) | 2020.01.23 |