Мне задали этот вопрос на собеседовании для google пару недель назад, я не получил ответа, и мне было интересно, может ли кто-нибудь здесь помочь мне.
У вас есть массив с элементами n. Элементами являются либо 0, либо 1. Вы хотите, чтобы разделил массив на k смежных подмассивов. Размер каждого подмассива может варьироваться от ceil (n/2k) до пола (3n/2k). Вы можете предположить, что k < п. После того, как вы разделите массив на k subarrays. Один элемент каждого подмассива будет случайным образом выбран.
Разработать алгоритм максимизации суммы случайно выбранных элементов из k подмассивов. В основном это означает, что мы хотим разбить массив таким образом, чтобы сумма всех ожидаемых значений для элементов, выбранных из каждого подмассива, была максимальной.
Вы можете предположить, что n является степенью 2.
Example:
Array: [0,0,1,1,0,0,1,1,0,1,1,0]
n = 12
k = 3
Size of subarrays can be: 2,3,4,5,6
Possible subarrays [0,0,1] [1,0,0,1] [1,0,1,1,0]
Expected Value of the sum of the elements randomly selected from the subarrays: 1/3 + 2/4 + 3/5 = 43/30 ~ 1.4333333
Optimal split: [0,0,1,1,0,0][1,1][0,1,1,0]
Expected value of optimal split: 1/3 + 1 + 1/2 = 11/6 ~ 1.83333333