Algorithm/SW Expert Academy

[Python] 1865. 동철이의 일분배

느낌표 공장장 2021. 10. 7. 23:33
def recur(idx, total):
    global answer

    if idx == n:    # 일 배분 다 했다면
        answer = max(answer, total) # 최대 확률로 갱신
        return

    if total <= answer: # 가지치기
        return

    for i in range(n):
        if not visited[i]:  # i 일 배분한적 없다면
            visited[i] = True   # idx 직원이 i 일 해
            recur(idx+1, total*percentage[idx][i]*0.01)   # 다음 직원으로 넘어가
            visited[i] = False  # 다음 사용을 위해 방문 해제


for idx in range(1, int(input())+1):
    n = int(input())
    percentage = [list(map(int, input().split())) for _ in range(n)]

    visited = [False for _ in range(n)] # 방문 처리
    answer = 0
    recur(0, 1)

    print('#{} {:7f}'.format(idx, answer*100))

 

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 1861. 정사각형 방  (0) 2021.10.08
[Python] 2819. 격자판 이어붙이기  (0) 2021.10.08
[Python] 5209. 최소 생산 비용  (2) 2021.10.07
[Python] 5208. 전기버스2  (0) 2021.10.07
[Python] 5207. 이진탐색  (0) 2021.10.07