Решение задачи
Алгоритм решения задачи:
Совет: для упрощения логики выполните предварительную обработку, чтобы предположить, что a >= b >= c.
При условии a >= b >= c: всегда пытайтесь добавить 'aa'. Если a - 2 >= b, добавьте 'b' (если нет, в следующем раунде будет добавлено 'bb'). Повторяйте рекурсивно для оставшихся отсчетов.
Другими словами, мы жадно используем два символа из самой большой кучи. Мы объединяем эти два символа с символом из средней кучи. Например, для [11,5,3] мы сначала генерируем 'aabaabaab', и наши кучи становятся [5,2,3]. В это время c становится средней кучей, и мы генерируем '..aac' ([3,2,2]). После добавления еще одного '...aa', c становится самой большой кучей, и мы извлекаем из нее два символа '...cc' ([1,2,0]). Мы добавляем оставшиеся '..bba', и в результате получаем строку 'aabaabaabaabaacaaccbba'.
Этот алгоритм может быть эзилистически доказан с помощью противоречия (и контрпримеров).
