티스토리 뷰

반응형

문제의 저작권은 SW Expert Academy에 있습니다.

sw expert academy 배열 최소 합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def sol(N, k, s):
    global res
    if N == k :
        if res > s:
            res = s
 
    if res < s:
        return
 
    else:
        for i in range(N):
            if visited[i] == 0:
                visited[i] =1
                sol(N, k+1, s+ data[k][i])
                visited[i] =0
 
TC = int(input())
for tc in range(1, TC+1):
    N = int(input())
    data = [list(map(int, input().split())) for _ in range(N)]
    visited = [0]*N
 
    k = 0
    res = 10*N
 
    sol(N, 00)
    print("#%d %d"%(tc, res))
cs

if res < s:

        return

이 가지치기 부분 안하면 시간 초과 난다.

 

재귀 부분을 간단히 설명하면 k가 행을 나타내고 for문의 i가 열을 나타낸다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함