문제
15650번: N과 M (2)
풀이
#include <iostream>
using namespace std;
int n, m;
// 1부터 n까지 자연수 중 중복 없이 m개를 고른 수열
// 수열은 오름차순
bool visited[9];
int result[9];
void dfs(int cnt) {
// 수열의 갯수가 m개가 되면 출력 후 종료
if (cnt == m) {
for (int i = 0; i < m; ++i) {
cout << result[i] << ' ';
}
cout << '\\n';
return ;
}
for (int i = 1; i <= n; ++i) {
if (!visited[i] && i > result[cnt - 1]) {
result[cnt] = i;
visited[i] = true;
dfs(cnt + 1);
result[cnt] = 0;
visited[i] = false;
}
}
}
int main()
{
cin >> n >> m;
dfs(0);
return 0;
}