BOJ
[백준][c++] 15649번: N과 M (1)
LEE MINGYU
2024. 9. 9. 11:04
https://www.acmicpc.net/problem/15649
문제 해석
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열을 사전순으로 출력
알고리즘 분류
- 백 트래킹
풀이
- 재귀함수와 불리언 배열을 이용해서 해결한다
- endl 을 사용하면 시간초과가 발생하니 주의
코드
#include <iostream>
using namespace std;
static int N,M;
static int arr[8];
static bool check[8];
void find(int len) {
if (len == M) {
for (int i=0; i < M; i++) {
cout << arr[i] << " ";
}
cout << "\n";
return;
}
for(int i = 1; i <= N; i++) {
if (check[i]) continue;
check[i] = true;
arr[len] = i;
find(len + 1);
check[i] = false;
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> M;
find(0);
return 0;
}