백트랙킹
-알고리즘은 노드의 유망성 점검 후, 유망하지 않으면 그 노드의 부모로 되돌아간 후 다른 자식 노드를 검색하는 알고리즘이다.
출처
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
내 코드
n, m = map(int, input().split())
visited = [-1] * n
out = []
def solve(depth, m):
if depth == m:
print(' '.join(map(str, out)))
return
for i in range(n):
if i+1 not in visited:
visited[i] = i+1
out.append(i+1)
solve(depth+1, m)
visited[i] = -1
out.pop()
solve(0, m)
- i가 0번째부터 시작하므로 visited의 값을 -1로 리스트를 만들어준다.
- 방문하지 않은 정수에 대해서 dfs 작업을 해준다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준-파이썬] 2941번: 크로아티아 알파벳 (0) | 2020.08.25 |
---|---|
[백준-파이썬] 5622번: 다이얼 (0) | 2020.08.21 |
[백준-파이썬] 1157번: 단어공부 (0) | 2020.08.20 |
[백준 -파이썬] 10809 알파벳 찾기 (0) | 2020.08.19 |
15650 N과 M_2(백트랙킹) (0) | 2020.08.07 |