본문 바로가기
알고리즘&자료구조/백트레킹

백준 15654

by do_ng 2024. 3. 10.
#include<iostream>	
#include<algorithm>
using namespace std;

int N, M;
bool state[10000]; // 사용여부 상태
int arr[10000];  // 상태에 대한 데이터 배열이 {1,2,3} 순으로 정렬되어 있으면 상태배열에 [0],[1],[2] 각각 매칭됨
int temp[10000]; // 재귀함수를 돌면서 모든 경우의 수를 체크해 출력하기 위한 용도

void func(int k) {

	if (k == M) {
		for (int i = 0; i < M; i++)
			cout << temp[i] << ' ';
		cout << '\n';
		return;
	}

	for (int i = 0; i < N; i++) {
		if (state[i] == 0) {
			temp[k] = arr[i];
			state[i] = 1;
			func(k + 1);
			state[i] = 0;
		}
	}	

}

int main(void) {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	// 1.입력	
	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + N); // 오름차순 정렬
	func(0);
	
	return 0;
}

'알고리즘&자료구조 > 백트레킹' 카테고리의 다른 글

백준 15656  (0) 2024.03.15
백준 15655  (0) 2024.03.11
백준 15652  (0) 2024.03.08
백준 15651  (2) 2024.03.07
백준 15650  (0) 2024.03.06