출처: https://www.acmicpc.net/problem/15650
소스 코드
n, m = list(map(int, input().split()))
s = ()
def dfs(start):
if len(s) == m:
print(' '.join(map(str, s)))
return
for i in range(start, n + 1):
if i not in s:
s.append(i)
dfs(i+1)
s.pop()
dfs(1)
해설
백트래킹 알고리즘을 이용해 해결할 수 있으며, 15649번 문제와 같은 문제다.
수열이 오름차순이어야 하기 때문에 start 변수를 두고 재귀를 할 때 i+1 에서 i 의 다음의 수로부터 들어가도록 한다.
2023.03.14 – (알고리즘/백준) – (Python) 백준 15649번 N과 M(1)
(파이썬) 백준15649번 N과 M(1)
출처:https://www.acmicpc.net/problem/15649 15649번:N과 M (1) 1행에 1개씩 문제의 조건을 만족하는 수열을 출력한다.
중복되는 수열을 여러 번 출력하지 마십시오. 각 수열은 공백으로 구분하여 출력해야 합니다.
tlsdbfk.