확률을 인자로 넘기는 백트래킹.
def dfs(row, p):
global max_p
if row == N:
max_p = p
return
for col in range(N):
next_p = p * P[row][col]
if not col_check[col] and next_p > max_p:
col_check[col] = True
dfs(row + 1, next_p)
col_check[col] = False
for test in range(1, int(input()) + 1):
N = int(input())
P = [list(map(lambda x: int(x) / 100, input().split())) for __ in range(N)]
col_check = [False] * N
max_p = 0
dfs(0, 1)
print(f'#{test} {max_p * 100:.6f}')
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 1861 정사각형방 (0) | 2021.10.08 |
---|---|
[SWEA][Python] 1486 장훈이의 높은 선반 (0) | 2021.10.08 |
[SWEA][Python] 5248 그룹 나누기 (0) | 2021.10.06 |
[SWEA][Python] 5247 연산 (0) | 2021.10.06 |
[SWEA][Python] 5209 최소 생산 비용 (0) | 2021.10.06 |