白駿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])
結果は正しい
Reference
この問題について(白駿15664), 我々は、より多くの情報をここで見つけました https://velog.io/@chuneeeee/백준-15664-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol