하루하나코딩

백준 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를 이용해 주어야 했다.

백트래킹도 슬슬 다 해간다