Algorithm(CodeTree, Python)/Backtracking
[코드트리] xor 결과 최대 만들기 Python
by kurooru
2023. 2. 2.
# n, m 입력
n, m = map(int, input().split())
# num_list
num_list = list(map(int, input().split()))
# 함수들
# calc(curr_comb)
def calc(curr_comb):
# curr_result
curr_result = 0
# 계산 시작
for num in curr_comb:
curr_result = curr_result ^ num
# 반환
return curr_result
# simulate(curr_idx, cnt)
def simulate(curr_idx, cnt):
# 전역 변수 선언
global max_num
# 종료 조건
# 끝까지 닿고,
if curr_idx == n:
# 다 썼으면,
if cnt == m:
# max_num udpate
max_num = max(max_num, calc(comb))
return
# 넣을 경우
comb.append(num_list[curr_idx])
simulate(curr_idx + 1, cnt + 1)
comb.pop()
# 안넣을 경우
simulate(curr_idx + 1, cnt)
# 설계
# max_num
max_num = 0
# comb
comb = []
# simulate(curr_idx, cnt)
simulate(0, 0)
# 출력
print(max_num)