개인공부용123 프로그래밍 블로그

[백준]boj15649 본문

알고리즘문제

[백준]boj15649

개인공부용123 2020. 8. 10. 23:55

1. 풀이 방식 

  - 가능한 모든 수열의 갯수를 찾아야 함

  - 수열의 오름차순으로 나와야함

  - 완전탐색을 하되 이미 pick한 값은 제외 하여 탐색, pick한값들은 배열에 임시 저장해둠

  - 고를수있는 숫자를 전부 고르면 임시저장해둔 값을 출력

  - 탐색은 1부터 진행하므로 오름차순 정렬을 보장

2. 유의 사항 : pick 한 후 다시 자기 step에 왔을때 pick 한 숫자를 풀어줘야함

 

#include <iostream>
#include <stdio.h>
using namespace std;

#define MAX 1000000

bool check[9];
int arr[9];
int n,m;

void suyeol(int cur, int st) {
	// 결과 값 출력
	if (cur == m) {
		for (int i = 0; i < m; ++i) {
			printf("%d ", arr[i]);
		}
		printf("\n");
	}

	// 탐색
	for (int i = 1; i <= n; ++i) {
		if (check[i]) continue;

		arr[cur] = i;
		check[i] = true;
		suyeol(cur + 1, i + 1);
		check[i] = false;
	}
}

int main() {
	for (int i = 0; i < 9; ++i) check[i] = false;

	cin >> n >> m;

	suyeol(0, 1);

	return 0;
}

 

 

'알고리즘문제' 카테고리의 다른 글

[백준] boj12865  (0) 2020.08.21
[백준] boj10872  (0) 2020.08.10
[백준] boj 2751  (0) 2020.08.09
[백준] boj1316  (0) 2020.07.06
[백준] 6591  (0) 2017.05.19