Мне задали этот вопрос в интервью для Google пару недель назад, я не совсем получил ответ, и мне было интересно, сможет ли кто-нибудь здесь помочь мне.
У вас есть массив с n элементами. Элементы либо 0, либо 1.
Вы хотите разбить массив на k непрерывных подмассивов . Размер каждого подмассива может варьироваться от потолка (n / 2k) до пола (3n / 2k). Вы можете предположить, что k << n.
После того, как вы разбили массив на k подмассивов. Один элемент каждого подмассива будет выбран случайным образом. </p>
Разработать алгоритм максимизации суммы случайно выбранных элементов из 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