c++ STL에서 제공해주는 <algorithm> 헤더 안에는 next_permutation 함수가 있다.
다른 언어에는 없다고 한다. c++유저들의 특권인 셈이다.
이를 잘 이용하면 조합과 순열을 편하게 만들 수 있다.
아래 코드를 참고하자.
1,2,3,4,5를 이용해 next_permutation으로 순열을 만들 수도 있고,
이 5개의 원소중 3개를 순서상관없이 뽑고싶다면, prev_permutation과 temp = {1, 1, 1, 0, 0} 배열을 적절히 이용하면 된다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> arr = {1, 2, 3, 4, 5};
vector<int> temp = {1, 1, 1, 0, 0};
do {
for (int i=0;i<temp.size();i++) {
if (temp[i] == 1) cout << arr[i] << " ";
}
cout << endl;
}while(prev_permutation(temp.begin(), temp.end()));
return 0;
}
야호!