하루하나코딩
백준 15655 : N과 M(6) c++
HAHAKO
2023. 2. 15. 23:36
코드
#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를 이용해 주어야 했다.
백트래킹도 슬슬 다 해간다