본문 바로가기

C++/CodingTest

[백준 15649] N과 M(1).cpp

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

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

#include <stdio.h>
// Global Variable
int N, M;
bool visited[9];
int saved_arr[9];
// Definition
void Input();
void Dfs(int cnt);
// Main
int main() {
Input();
Dfs(0);
}
// Declaration
void Input() {
freopen("input.txt", "r", stdin);
scanf("%d %d", &N, &M);
}
void Dfs(int cnt) {
if (cnt == M) {
for (int i = 0; i < M; i++) {
printf("%d ", saved_arr[i]);
}
printf("\n");
return;
}
for (int i = 1; i <= N; i++) {
if (visited[i] == true) continue;
visited[i] = true;
saved_arr[cnt] = i;
Dfs(cnt + 1);
visited[i] = false;
}
}