백트래킹 사골 15649-15657

This commit is contained in:
2020-08-08 17:41:32 +09:00
parent 0196c1a5dc
commit 8a16d1af3a
9 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
N, M = map(int, input().split())
trace = [(list(range(1, N + 1)), M, [])]
while trace:
n, m, d = trace.pop()
for i in range(len(n) - 1, -1, -1):
trace.append((n[:i] + n[i + 1:], m - 1, d + [n[i]]))
if m == 0:
print(" ".join(map(str, d)))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ

View File

@@ -0,0 +1,11 @@
N, M = map(int, input().split())
trace = [([i], M, i) for i in range(N, 0, -1)] # prev, depth, now
while trace:
p, d, n = trace.pop()
for i in range(N, n, -1):
trace.append((p + [i], d-1, i))
if d == 1:
print(" ".join(map(str, p)))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ

View File

@@ -0,0 +1,11 @@
N, M = map(int, input().split())
trace = [([i], M) for i in range(N, 0, -1)] # prev, depth
while trace:
p, d = trace.pop()
if d == 1:
print(" ".join(map(str, p)))
continue
for i in range(N, 0, -1):
trace.append((p + [i], d-1))
# 킹트래킹

View File

@@ -0,0 +1,12 @@
N, M = map(int, input().split())
trace = [([i], M, i) for i in range(N, 0, -1)] # prev, depth, now
while trace:
p, d, n = trace.pop()
if d == 1:
print(" ".join(map(str, p)))
continue
for i in range(N, n-1, -1):
trace.append((p + [i], d-1, i))
# 코드 재사용 팝트래킹

View File

@@ -0,0 +1,10 @@
N, M = map(int, input().split())
trace = [(sorted(list(map(int, input().split()))), M, [])]
while trace:
n, m, d = trace.pop()
for i in range(len(n) - 1, -1, -1):
trace.append((n[:i] + n[i + 1:], m - 1, d + [n[i]]))
if m == 0:
print(" ".join(map(str, d)))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ

View File

@@ -0,0 +1,13 @@
N, M = map(int, input().split())
K = list(map(int, input().split()));K.sort()
trace = [([v], M, i) for i, v in reversed(list(enumerate(K)))] # prev, depth, now
while trace:
p, d, n = trace.pop()
if d == 1:
print(" ".join(map(str, p)))
continue
for i in range(N-1, n, -1):
trace.append((p + [K[i]], d-1, i))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ

View File

@@ -0,0 +1,13 @@
N, M = map(int, input().split())
K = list(map(int, input().split()));K.sort()
trace = [([v], M, i) for i, v in reversed(list(enumerate(K)))] # prev, depth, now
while trace:
p, d, n = trace.pop()
if d == 1:
print(" ".join(map(str, p)))
continue
for i in range(N-1, -1, -1):
trace.append((p + [K[i]], d-1, i))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ

View File

@@ -0,0 +1,13 @@
N, M = map(int, input().split())
K = list(map(int, input().split()));K.sort()
trace = [([v], M, i) for i, v in reversed(list(enumerate(K)))] # prev, depth, now
while trace:
p, d, n = trace.pop()
if d == 1:
print(" ".join(map(str, p)))
continue
for i in range(N-1, n-1, -1):
trace.append((p + [K[i]], d-1, i))
# 아마도 백트래킹일거임 아마도 그럼 ㅇㅇ