알고리즘
백트래킹을 통해 구현한다.
소스 코드
# N과 M 2
import sys
n, m = map(int, sys.stdin.readline().split())
arr = [0] * m # 수열 저장
isused = [False] * (n + 1)
s = set()
def func(k):
if k == m:
s.add(tuple(sorted(arr)))
return
for i in range(1, n + 1):
if not isused[i]:
arr[k] = i
isused[i] = True
func(k+1)
isused[i] = False
func(0)
for i in sorted(list(s)):
print(*i)
'백준 문제 풀이' 카테고리의 다른 글
[백준] 1874 "스택 수열" -python (0) | 2024.01.02 |
---|---|
[백준] 11054 "가장 긴 증가하는 부분 수열" -python (1) | 2024.01.02 |
[백준] 9663 "N-Queen" -python (1) | 2023.12.29 |
[백준] 15651 "N과 M (3)" -python (0) | 2023.12.29 |
[백준] 1339 "단어 수학" -python (0) | 2023.12.28 |