개인공부용123 프로그래밍 블로그
[백준]boj15649 본문
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 |