Слайд 2Постановка задачи
В одной компьютерной игре игрок выставляет в линию шарики разных цветов.
Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться.
Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас уничтожено. Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный момент может быть не более одной.
Слайд 3Постановка задачи
Входные данные
Даны количество шариков в цепочке (не более 10^5) и цвета
шариков (от 0 до 9, каждому цвету соответствует свое целое число).
Выходные данные
Требуется вывести количество шариков, которое будет уничтожено.
Слайд 4Что необходимо для решения задачи?
Двунаправленный линейный список
Функция добавления элемента в список
Функция удаления
элемента из списка
Слайд 5Алгоритм
Запоминаем текущий цвет в переменной
Двигаемся по списку и считаем, сколько шариков этого
цвета идет подряд
Если подряд идет 3 и более шариков одного цвета, уходим в начало цепочки одноцветных шариков, а затем удаляем их
Действия выполняются до тех пор, пока список не закончится
Слайд 6Пример
Допустим, нам дана последовательность из 12 шариков:
0 7 7 3 2 2
2 3 3 7 7 1
Слайд 7
1
0 7 7 3 3 3 7 7 1
0 7 7 7 7 1
0 1
10