#include <bits/stdc++.h>
using namespace std;
bool visited[9];
int re[9];
vector<int> v;
vector<int> temp;
set<vector<int> > s;
void solve(int n, int m, int k)
{
if (m == k)
{
for (int i = 0; i < m; i++)
{
temp.push_back(v.at(re[i]));
// cout << v.at(re.at(i)) << " ";
}
s.insert(temp);
temp.clear();
return;
}
for (int i = 0; i < n; i++)
{
if (!visited[i])
{
visited[i] = true;
re[k] = i;
// re[k] = i;
// visited[k] = true;
solve(n, m, k + 1);
visited[i] = false;
}
// visited[i] = false;
}
}
int main(void)
{
cin.tie(0);
ios::sync_with_stdio(0);
int N, M;
cin >> N >> M;
int arr[9];
fill_n(visited, M, false);
fill_n(arr, 9, -1);
for (int i = 0; i < N; i++)
{
int a;
cin >> a;
v.push_back(a);
}
//sort(v.begin(), v.begin() + v.size());
solve(N, M, 0);
for(vector<int> v: s){
for(int num : v){
cout<< num<<" ";
}
cout<<"\n";
}
return 0;
}
set : 중복 불가능, 정렬된 컨테이너
fill_n(arr, size, 채울 값) - 배열 채우기
오늘의 회고
- 시험기간이어도 알고리즘, 스프링 공부 조금씩이라도 하기!
- 내일(4/16) 학습 예정 : 스프링부트 로그인 관련 공부