출처

 

15650번: N과 M (2)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

내 코드

n, m = map(int, input().split())
visited = [False] * n
out = []
def solve(depth, m, idx):
    if depth == m:
        print(' '.join(map(str, out)))
        return

    for i in range(idx, n):
        if not visited[i]:
            visited[i] = True
            out.append(i+1)
            solve(depth+1, m, i+1)
            visited[i] = False
            out.pop()

solve(0, m,0)
  • solve(0, m, 0) -> v = [t,f,f,f] out = [1]
  • solve(1,m,1)-> v = [t,t,f,f] pit = [1,2]
  • solve(1

+ Recent posts