Algorithm

[BOJ] 15654번 : N과 M (5)

rudgh99_algo 2024. 8. 18. 15:09

1. problem :

https://www.acmicpc.net/problem/15654

 

 

2. solution 1 :

#include <bits/stdc++.h>
using namespace std;
int N, M;
int arr[8];
int ans[8];
int isUsed[8] = { 0 };

void backTrack(int k) {
	if (k == M) {
		for (int i = 0; i < M; i++) cout << ans[i] << ' ';
		cout << '\n';
		return;
	}
	for (int i = 0; i < N; i++) {
		if (!isUsed[i]) {
			isUsed[i] = 1;
			ans[k] = arr[i];
			backTrack(k + 1);
			isUsed[i] = 0;
		}
	}
}

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

	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + N);
	backTrack(0);
	return 0;
}

isUsed를 전역변수로 설정하였으면, 초기화가 자동으로 0으로 할당된다. 따라서, 따로 초기화 필요 없다.