한 경우를 연산자들의 시퀀스로 표현 가능
stage t: 연산자 개수, t=0..len(arr)//2
state i: 첫 번째 피연산자 인덱스, i=0..len(arr)-1
ret func:
ret_max(t, i): 최댓값
ret_min(t, i): 최솟값
BE:
arr_str = ‘’.join(arr)
ret_max(t, i) = max(ret_max(x, i) + ret_max(t-x, i+2*x) for x in range(0, t+1))
ret_min(t, i) = min(ret_min(x, i) + ret_min(t-x, i+2*x) for x in range(0, t+1))
ret_max(t, i) = max(ret_max(x, i) - ret_min(t-x, i+2*x) for x in range(0, t+1))
ret_min(t, i) = min(ret_min(x, i) - ret_max(t-x, i+x) for x in range(0, t+1))
BC: ret_max(0, i) = ret_min(0, i) = arr[i]
Obj: ret_max(len(arr)//2, 0)
t len(ret_max)
0 7+1
1 5+1
2 3+1
3 1+1
OP_NUM 1