白駿15664


質問する


NとM(10)


白駿15664

に答える


NとM 6と大差ない
NとM 6号を見たいなら?NとMを見に行く(6)
  • 数列の内部値は降雨順->元素は同じまたは増大した形態である.
  • 重複値を出力しない->このため、
  • を使用します(重複値の場合は印刷しません)
    出力は非降順なので、ソートしてから配列内を順次ナビゲートします.
    再帰関数を使用して条件を満たす場合は、正解配列に1つ追加し、配列要素の個数がMの場合にのみ出力します.
    最終出力時の重複値を除去するために、出力された数列に格納配列を作成し、出力時にその配列が存在するかどうかを確認し、存在しない場合にのみ出力します.

    正しいコード

    # N과 M (10)
    
    # N개중에 M개 
    
    # 비내림차순? => 같거나 커지는 순으로 간다 
    
    N,M=map(int,input().split())
    
    lst=list(map(int,input().split()))
    dup_check=[]
    def solve(num,start,ans):
        if len(ans)==num:
            tmp=[lst[i] for i in ans]
            if tmp in dup_check:
                return
            for i in ans:
                print(lst[i],end=' ')
            print()
            dup_check.append(tmp)
            return
        
        for i in range(start+1,len(lst)):
            solve(num,i,ans+[i])
    
    lst.sort()
    for i in range(N):
        solve(M,i,[i])

    結果は正しい