Минимальный размер после объединения двух одинаковых элементов в +1 [закрыто] ⇐ 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
Ддан массив из 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
Мобильная версия