컴퓨터기본/문제풀이
[백준] 15650번: N과 M (2)
차가운오미자
2021. 9. 13. 10:31
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 이해
DFS를 이용해서 모든 수열을 구하면 된다.
작성 코드
#include <iostream>
using namespace std;
int N, M;
int visited[9];
int ans[9];
void Check(int cnt, int start){
if(cnt == M){
for(int i = 0; i<M; i++){
cout << ans[i] << " ";
}
cout << "\n";
return;
}
else{
for(int i = start; i<=N; i++){
if(!visited[i]){
visited[i] = 1;
ans[cnt] = i;
Check(cnt+1, i+1);
visited[i] = 0;
}
}
}
}
int main(void){
cin >> N >> M;
Check(0, 1);
}