Минимальный размер после объединения двух одинаковых элементов в +1 [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Минимальный размер после объединения двух одинаковых элементов в +1 [закрыто]

Сообщение Гость »


Ддан массив из N элементов. Мы можем выбрать любую пару из двух соседних одинаковых элементов x, а затем заменить эти два элемента новым элементом x + 1, количество комбинаций не ограничено. Найдите минимальное количество элементов в массиве, когда слияние больше невозможно.
Пример:
N[5] = {1, 1, 1, 2, 1
N[7] = {3, 3, 3, 4, 4, 4, 5
Процесс слияния:
{1, 1, 1, 2, 1 ==> {1, 2, 2, 1 ==> {1, 3, 1 – Таким образом, минимальный размер – 3.
{3, 3, 3, 4, 4, 3, 5 ==> {3, 4, 4, 4, 4, 5 = => {3, 5, 4, 4, 5 ==> {3, 5, 5, 5} ==> {3, 6, 5} — Таким образом, минимальный размер — 3
Это мой код, он исправит, если порядок слияния последовательный и неправильный в противном случае.
Например: {1, 1, 2, 2, 2, 1 ==> Минимальный размер — 2, но в двух вышеперечисленных случаях возвращаются неправильные ответы.

#include использование пространства имен std; интервал п, а; стек ул; интервал основной() { ios_base::sync_with_stdio (ложь); cin.tie(NULL); //freopen("UNITED.INP", "r", stdin); //freopen("UNITED.OUT", "w", stdout); цин >> п; for (int i = 1; i > а; while(!st.empty() && st.top() == a) { ст.поп(); а++; } st.push(а); } cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»