BOJ | 15655 N과 M(6)

133210·2021년 8월 12일
0

알고리즘 스터디

목록 보기
9/16
post-thumbnail

BOJ 15655

| Problem

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.

  • N개의 자연수 중에서 M개를 고른 수열
  • 고른 수열은 오름차순이어야 한다.

입력
첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.


직접 숫자 받아옴 + 오름차순 정렬
N과 M(2)와 유사하게 작성하면 됨

| Code

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, m;
int a[8];
vector<int> seq;

void func(int index, int size) {
	if (size == m)
	{
		for (int i : seq)
			printf("%d ", i);
		printf("\n");
		return;
	}
	for (int i = index; i < n; i++)
	{
		seq.push_back(a[i]);
		func(i + 1, size + 1);
		seq.pop_back();
	}
}

int main() {
	scanf("%d %d", &n, &m);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	sort(a, a + n);
	func(0, 0);
	return 0;
}

| Result

0개의 댓글