15650 NとM(2)


質問する
NとM(1)は順番ですが、今回は組み合わせを要求
  • 最初の回答
    パラメータにインデックスを付けた
    ダブルfor文で2番目の繰り返し文からi+1を開始したときのように、
  • for i in range(n-1):
    	for j in range(i+1, n):
    n, m = map(int, input().split())
    visited = [0] * (n+1)
    
    arr = [0] * m
    def backtracking(k, idx):
        if k == m:
            print(*arr)
            return
        
        for i in range(idx, n+1):
            if not visited[i]:
                arr[k] = i
                visited[i] = 1
                backtracking(k+1, i+1)
                visited[i] = 0
    backtracking(0, 1)
  • 第2プール
  • n, m = map(int, input().split())
    
    s = []
    
    def backtracking(idx):
        if len(s) == m:
            print(' '.join(map(str,s)))
            return
        
        for i in range(idx, n+1):
            if i in s:
                continue
            s.append(i)
            backtracking(i+1)
            s.pop()
    
    backtracking(1)