3三日で必ず勝つと決心した.でも今は針を持っていて、


ブルートフォス:私はNとMを勉強しています.今日書いたコードは見てみればわかりますが、実はそこです.
この問題はバックトラックを利用した基本的な問題である.
  • バックグラウンドトラッキングとは?
    Depth-First-Search(DFS)に基づいて解を探し、このパスで解を発見できないと判断した場合は、検索を中断して再び戻ることができます.
    複文の回数を減らすことができるので,有効な方法といえる.
  • 白駿15649
    import sys
    n,m = map(int,input().split())
    c = [False]*(n+1)
    a = [0]*m
    
    def go(index, n, m):
        if index == m:
            sys.stdout.write(' '.join(map(str,a))+'\n')
            return
        for i in range(1, n+1):
            if c[i]:
                continue
            c[i] = True
            a[index] = i
            go(index+1, n, m)
            c[i] = False
    
    go(0,n,m)
    
    白駿15650
    import sys
    n,m = map(int,input().split())
    c = [False]*(n+1)
    a = [0]*m
    
    def go(index, start, n, m):
        if index == m:
            sys.stdout.write(' '.join(map(str,a))+'\n')
            return
        for i in range(start, n+1):
            if c[i]:
                continue
            c[i] = True
            a[index] = i
            go(index+1, i+1, n, m)
            c[i] = False
    
    go(0,1,n,m)
    오름차순白駿15651
    import sys
    n,m = map(int,input().split())
    c = [False]*(n+1)
    a = [0]*m
    
    def go(index, n, m):
        if index == m:
            sys.stdout.write(' '.join(map(str,a))+'\n')
            return
        for i in range(1, n+1):
            c[i] = True
            a[index] = i
            go(index+1, n, m)
            c[i] = False
    
    go(0,n,m)
    중복선택 가능