문제에서 요구한 조건이 내림차순이라는 조건이 있으므로, 정렬한 상태에서 몇 번째 index를 고려하고 잇는지와 몇 번째 자리까지 채웠는지를 판단해야 한다. 따라서 각 변수를 함수의 인자로 제공해주면 된다.
Code
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
vector<int> v;
int N, M;
int result[8];
void solve(int cur, int index)
{
result[index++] = v[cur];
if (index == M){
for (int i = 0; i < M; i++)
{
if (i != M - 1)
cout << result[i] << " ";
else
cout << result[i] << "\n";
}
return;
}
for (int i = cur + 1; i < N; i++){
solve(i, index);
}
return;
}
int main(void)
{
fastio;
memset(result, 0, sizeof(result));
cin >> N >> M;
for (int i = 0; i < N; i++)
{
int t;
cin >> t;
v.push_back(t);
}
sort(v.begin(), v.end());
for(int i = 0; i < N; i++){
solve(i, 0);
}
return 0;
}