728x90
https://www.acmicpc.net/problem/15664
15664번: N과 M (10)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
백트래킹이 너무 부족해서 쉬운문제부터 다시 시작...
def backtrack(ind, limit, prev):
global nums, answer, visit
if ind == limit:
tmp = tuple([nums[i] for i, v in enumerate(visit) if v])
if tmp not in answer:
print(*tmp)
answer.add(tmp)
return
for i in range(prev + 1, len(nums)):
if visit[i]: continue
visit[i] = 1
backtrack(ind+1, limit, i)
visit[i] = 0
def main():
global nums, answer, visit
N, M = map(int, input().split())
nums = sorted(map(int, input().split()))
answer = set()
visit = [0 for _ in range(N)]
backtrack(0, M, -1)
if __name__=="__main__":
main()
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 11000 강의실 배정 python (0) | 2022.02.27 |
---|---|
[백준] 14502 연구소 python (0) | 2022.02.26 |
[백준] 21939 문제 추천 시스템 Version 1 python (0) | 2022.02.23 |
[백준] 1197 최소 스패닝 트리 python (0) | 2022.02.22 |
[백준] 11655 ROT13 C,C++ (0) | 2022.02.21 |