문제 링크입니다: https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.
www.acmicpc.net
전형적인 백트래킹 문제였습니다.
N과 M의 범위가 매우 작기 때문에 어떠한 방법으로 풀어도 TLE가 발생하지 않을 것입니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
using namespace std; | |
const int MAX = 8 + 1; | |
int N, M; | |
int arr[MAX]; | |
bool visited[MAX]; | |
void func(int cnt) | |
{ | |
if (cnt == M) | |
{ | |
for (int i = 0; i < M; i++) | |
cout << arr[i] << " "; | |
cout << "\n"; | |
return; | |
} | |
for (int i = 1; i <= N; i++) | |
if (!visited[i]) | |
{ | |
visited[i] = true; | |
arr[cnt] = i; | |
func(cnt + 1); | |
visited[i] = false; | |
} | |
} | |
int main(void) | |
{ | |
cin >> N >> M; | |
func(0); | |
return 0; | |
} |


개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 10174번 팰린드롬 (0) | 2019.07.29 |
---|---|
백준 15652번 N과 M (4) (0) | 2019.07.14 |
백준 1926번 그림 (0) | 2019.07.10 |
백준 10828번 스택, 10845번 큐, 10866번 덱 stl 사용하지 않고 구현 (0) | 2019.07.09 |
백준 3187번 양치기 꿍 (7) | 2019.06.20 |