Вопрос: перемещение цифр
Измените массив, выполнив над ним определенные перемещения. Учитывая массив чисел a (a < 10), два типа перемещений могут быть выполнены по любому индексу любое количество раз:
< p>Уменьшить число на 1. 0 уменьшить невозможно.
Увеличить число на 1. 9 невозможно увеличить.
Например, увеличьте 1 до 2 или уменьшите 5 до 4.
Массив должен быть изменено так, чтобы каждое число имело хотя бы одно равное соседнее число. Первое и последнее числа массива имеют только одно соседнее число, поэтому два числа на каждом конце должны совпадать друг с другом. Например, «11122» и «112233» — это хорошо, а «12111» и «12345» — нет.
Рассчитайте минимальное количество ходов, необходимое для преобразования массива в хороший массив. .
Пример
s = [1, 3, 1]
Уменьшите 3 дважды, чтобы получить [1, 1, 1]. Требуется минимум 2 хода.
Ограничения
2 ≤ |s| ≤ 105
Формат ввода для пользовательского тестирования
Ввод: [1, 2, 1, 2]
Вывод 2
Пояснение
Увеличьте s[0] на 1 и уменьшите s[3] на 1, чтобы получить «2211».
мой код, но он не работает. У меня больше нет идей
Вопрос: перемещение цифр Измените массив, выполнив над ним определенные перемещения. Учитывая массив чисел a (a[i] < 10), два типа перемещений могут быть выполнены по любому индексу любое количество раз: [list] [*]< p>Уменьшить число на 1. 0 уменьшить невозможно.
[*] Увеличить число на 1. 9 невозможно увеличить.
[/list] Например, увеличьте 1 до 2 или уменьшите 5 до 4. Массив должен быть изменено так, чтобы каждое число имело хотя бы одно равное соседнее число. Первое и последнее числа массива имеют только одно соседнее число, поэтому два числа на каждом конце должны совпадать друг с другом. Например, «11122» и «112233» — это хорошо, а «12111» и «12345» — нет. Рассчитайте минимальное количество ходов, необходимое для преобразования массива в хороший массив. . Пример s = [1, 3, 1] Уменьшите 3 дважды, чтобы получить [1, 1, 1]. Требуется минимум 2 хода. Ограничения 2 ≤ |s| ≤ 105 Формат ввода для пользовательского тестирования Ввод: [1, 2, 1, 2] Вывод 2 Пояснение Увеличьте s[0] на 1 и уменьшите s[3] на 1, чтобы получить «2211». мой код, но он не работает. У меня больше нет идей [code]int getMinMoves(string s) { int n = s.size(); int ans = 0; for (int i = 0; i < n; i++) { int cost1 = abs(s[i] - s[i - 1]); int cost2 = abs(s[i] - s[i + 1]);