[ ALGORITHM ]/[ 백 준 ]

[BAEKJOON] 15652번 N과 M (4)

HiStar__ 2020. 6. 16. 16:57

문 제

 

소 스  코 드

#include<iostream>

void Func(int, int, const int&, const int&, int *);
int main() {
	int N, M;
	while (1) {
		std::cin >> N >> M;

		if (M >= 1 && M <= N) {
			if (N >= M && N <= 8) break;
		}
	}

	int *temp{ new int[M] };
	temp[0] = 0;

	Func(0, 0, N, M, temp);

	delete[] temp;

	return 0;
}

void Func(int seq, int start, const int& n, const int& m, int* temp) {
	if (m == seq) {
		for (int i = 0; i < m; ++i) std::cout << temp[i] << " ";
		std::cout << "\n";
		return;
	}

	for (int i = start; i < n; ++i) {
		temp[seq] = i + 1;
		Func(seq + 1, i, n, m, temp); // 수정
	}
}

 

풀  이

15650번 N과 M (2)

15651번 N과 M (3)

 

길이가 K인 수열 A가 A1 ≤ A2 ≤ . . . ≤ Ak를 만족하는 비내림차순 이기 때문에

Func의 함수 내에 For 문의 i의 시작이 이전의 i + 1이 아닌 i로 동작하면 된다.

 

결 과 값

 

문 제  출 처

문제 링크 : [ BAEKJOON ] https://www.acmicpc.net/problem/15652

'[ ALGORITHM ] > [ 백 준 ]' 카테고리의 다른 글

[BAECKJOON] 2580번 스도쿠  (0) 2020.06.18
[BAEKJOON] 9663번 N-Queen  (0) 2020.06.17
[BAEKJOON] 15651번 N과 M (3)  (0) 2020.06.15
[BAEKJOON] 15650번 N과 M (2)  (0) 2020.06.14
[BAEKJOON] 15649번 N과 M (1)  (0) 2020.06.13