Notice
Recent Posts
Recent Comments
Link
전자공학 및 알고리즘
백준 15657 - N과 M(8)(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/15657
15657번: N과 M (8)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
백트래킹을 이용한 문제입니다.
N개의 수가 주어진뒤, 주어진 수를 통해 M개만큼 출력하는 문제입니다.
중복된 수도 출력이 되야하기에, check 배열을 통해서 선택된 수를 확인하면 안되는 문제입니다.
자세한 것은 코드를 참고해주세요
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>
#include <stack>
using namespace std;
int N, M;
int num[9];
vector<int> number;
void select_number(int x, int cnt) {
if (cnt == M) {
for (int i = 0; i < M; i++) {
cout << number[i] << " ";
}
cout << "\n";
}
else {
for (int i = x; i < N; i++) {
number.push_back(num[i]);
select_number(i, cnt + 1);
number.pop_back();
}
}
}
void solve() {
select_number(0, 0);
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N >> M;
for (int i = 0; i < N; i++) {
cin >> num[i];
}
sort(num, num + N);
solve();
return 0;
}
질문 및 조언 댓글 남겨주세요
'백준' 카테고리의 다른 글
백준 15666 - N과 M(12)(C++) (0) | 2022.02.20 |
---|---|
백준 15663 - N과 M(9)(C++) (0) | 2022.02.20 |
백준 15652 - N과 M(4)(C++) (0) | 2022.02.20 |
백준 9251 - LCS(C++) (0) | 2022.02.19 |
백준 11444 - 피보나치 수 6(C++) (0) | 2022.02.19 |