[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
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
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블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 (1 -
[C++ 백준] 1932 정수 삼각형
[C++ 백준] 1932 정수 삼각형
2021.11.22 -
[C++ 백준] 2108 통계학
[C++ 백준] 2108 통계학
2021.10.04블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 다음 4가지의 기본 통계 값을 구하는 프로그램을 작성하시오. 단, N(1 x; int sum = 0; int index = 0; int max = 0; vector list; for (int i = 0; i < x; i++) { int num; cin >> num; sum += num; if (num max) max = arr[index]; list.push_back(num); } // 평균, 소수점 이하 첫째 자리 반올림 float avg = sum / (float)x; cout -
[C++ 백준] 1181 단어 정렬
[C++ 백준] 1181 단어 정렬
2021.08.26
댓글을 사용할 수 없습니다.