코드
#include <iostream>
#include <algorithm>
using namespace std;
int N, M;
int number[9];
int arr[9];
bool visited[9];
void dfs(int a, int b){
if(a == M){
for(int i = 0; i < M; i++){
cout << number[arr[i]-1] << " ";
}
cout << "\n";
return;
}
for(int i = b; i <= N; i++){
if(!visited[i]){
visited[i] = true;
arr[a] = i;
dfs(a+1, i);
visited[i] = false;
}
}
}
int main(){
cin >> N >> M;
for(int i = 0; i < N; i++){
cin >> number[i];
}
sort(number, number+N);
dfs(0, 1);
return 0;
}
알게된 점
N과 M (4)와 매우 비슷했다.
다만 visited를 이용해 주어야 했다.
백트래킹도 슬슬 다 해간다
'하루하나코딩' 카테고리의 다른 글
백준 15657 : N과 M(8) c++ (0) | 2023.02.17 |
---|---|
백준 15656 : N과 M(7) c++ (0) | 2023.02.17 |
백준 15654 : N과 M(5) c++ (0) | 2023.02.15 |
백준 15652 : N과 M(4) c++ (1) | 2023.02.15 |
백준 15651 : N과 M(3) (0) | 2023.02.11 |