-
백준 15654 N과 M (5) | 조합 | C++[백준 알고리즘]/[C++] 2021. 4. 6. 14:01728x90반응형
이번 포스팅은 백준 15654번 N과 M (5)입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
15654번: N과 M (5)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
기본 알고리즘
조합을 재귀함수로 구현
15650번과 정렬이 되어있지 않은 입력 값들이 들어온다는 점만 제외하면 동일한 문제
15650번 풀이 참고 - scarlettb.tistory.com/125
백준 15650 N과 M (2) | 조합 | C++
이번 포스팅은 백준 15650번 N과 M (2)입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열..
scarlettb.tistory.com
전체 코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748//백준15654 N과 M (5)#include <iostream>#include <vector>#include <algorithm>using namespace std;const int MAX = 8;int N, M;vector<int> list;bool selected[MAX];vector<int> ans;void print() {for (int i = 0; i < ans.size(); i++) {cout << ans[i] << " ";}cout << "\n";}void DFS(int cnt) {if (cnt == M) {print();return;}for (int i = 0; i < N; i++) {if (selected[i]) continue;selected[i] = true;ans.push_back(list[i]);DFS(cnt + 1);ans.pop_back();selected[i] = false;}}int main() {cin >> N >> M;for (int i = 0; i < N; i++) {int n;cin >> n;list.push_back(n);}sort(list.begin(), list.end());DFS(0);return 0;}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
백준 10159 저울 | 플로이드-워셜 | C++ (0) 2021.04.08 백준 2458 키 순서 | 플로이드-워셜 | C++ (0) 2021.04.08 백준 11404 플로이드 | C++ (0) 2021.04.06 백준 9663 N-Queen | 백트래킹, DFS | C++ (0) 2021.04.01 백준 15652 N과 M (4) | 중복조합 | C++ (0) 2021.03.30