[C++ 백준] 15650 N과 M (2)
728x90
반응형
블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.
문제 설명
- 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
1. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 (1 <=M <=N <=8)
2. 오름차순
풀이 전략
- dfs를 활용한 조합 문제이다.
- for문의 i값을 재귀 함수의 인자로 넘겨주면 앞에서 이미 찾은 조합은 다시 뽑지 않도록 만들 수 있다.
- 중복이 없으므로 뒤의 숫자는 무조건 앞의 숫자보다 크다.
소스 코드
#include <iostream>
int arr[9] = { 0, };
bool visited[9] = { false, };
using namespace std;
void Dfs( int num, int cnt, int n, int m )
{
if( cnt == m )
{
for (int i = 0; i < m; i++)
cout << arr[i] << ' ';
cout << '\n';
return;
}
for (int i = num; i <= n; i++)
{
if (!visited[i])
{
visited[i] = true;
arr[cnt] = i;
Dfs(i + 1, cnt + 1, n, m);
visited[i] = false;
}
}
}
int main()
{
int n, m;
cin >> n >> m;
Dfs(1, 0, n, m);
}
링크
https://www.acmicpc.net/problem/15650
728x90
반응형
'문제풀이 > BOJ' 카테고리의 다른 글
[C++ 백준] 15652 N과 M (4) (0) | 2021.12.12 |
---|---|
[C++ 백준] 1932 정수 삼각형 (0) | 2021.11.22 |
[C++ 백준] 2108 통계학 (0) | 2021.10.04 |
[C++ 백준] 1181 단어 정렬 (0) | 2021.08.26 |
[C++ 백준] 18870 좌표 압축 (0) | 2021.08.18 |
댓글
이 글 공유하기
다른 글
-
[C++ 백준] 15652 N과 M (4)
[C++ 백준] 15652 N과 M (4)
2021.12.12 -
[C++ 백준] 1932 정수 삼각형
[C++ 백준] 1932 정수 삼각형
2021.11.22 -
[C++ 백준] 2108 통계학
[C++ 백준] 2108 통계학
2021.10.04 -
[C++ 백준] 1181 단어 정렬
[C++ 백준] 1181 단어 정렬
2021.08.26