굥뷰를 햡시댜

[BOJ - 15658] N과 M(8) 본문

알고리즘 문제 풀이/BOJ 문제 풀이

[BOJ - 15658] N과 M(8)

GodZ 2019. 11. 13. 10:50

https://www.acmicpc.net/problem/15657

 

15657번: N과 M (8)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.

www.acmicpc.net

 

중복 조합 문제 입니다.

 

이전 게시물인 N과 M(4)에서 중복 조합에 대한 설명과 풀이 방법에 대해 게시했으니 참고해주세요!

(동일한 방법으로 풀었습니다!)

 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int n, m;
vector<int> vec, sel;

void dfs(int node) {
	if (sel.size() == m) {

		for (int i = 0; i < sel.size(); i++) {
			printf("%d ", sel[i]);
		}
		printf("\n");

		return;
	}

	for (int i = node; i < vec.size(); i++) {
		sel.push_back(vec[i]);
		dfs(i);
		sel.pop_back();
	}
}

//중복 조합
int main(void) {

	scanf("%d %d", &n, &m);

	for (int temp, i = 0; i < n; i++) {
		scanf("%d", &temp);
		vec.push_back(temp);
	}

	sort(vec.begin(), vec.end());
	dfs(0);

	getchar();
	getchar();

	return 0;
}

'알고리즘 문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글

[BOJ - 15664] N과 M(10)  (0) 2019.11.13
[BOJ - 15663] N과 M(9)  (0) 2019.11.13
[BOJ - 15656] N과 M(7)  (0) 2019.11.13
[BOJ - 15655] N과 M(6)  (0) 2019.11.13
[BOJ - 15654] N과 M(5)  (0) 2019.11.12
Comments