- 주어진 k개의 수에서 중복하지 않고 6개를 골라 출력하는 문제.
즉 kC6개 경우를 출력하는 문제이다.
- 조합은 dfs로 재귀적으로 구하거나, next_permutation 사용해서 구할 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
while (1)
{
int k;
cin >> k;
if (k == 0) //입력 0이면 중단.
break;
vector<int> v;
for (int i = 0; i < k; i++)
{
int tmp;
cin >> tmp;
v.push_back(tmp);
}
vector<bool> comb(6, true);
for (int i = 0; i < k - 6; i++)
comb.push_back(false);
do
{
for (int i = 0; i < k; i++) //여기서 i를 6까지로 실수,
//true의 개수가 k개 중 6개이므로 전체 다 돌아야 한다.
{
if (comb[i])
cout << v[i] << ' ';
}
cout << '\n';
} while (prev_permutation(comb.begin(), comb.end()));
cout << '\n';
}
}