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으로 할당된다. 따라서, 따로 초기화 필요 없다.