|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.01.2015, 21:32 | #1 |
Пользователь
Регистрация: 02.01.2015
Сообщений: 85
|
Шарики (одномерный массив)
И снова здравствуйте! Попалась вот такая задачка:
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться. Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас "уничтожено". Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный момент может быть не более одной. Входные данные Сначала вводится количество шариков в цепочке (не более 1000) и цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число). Выходные данные Требуется вывести количество шариков, которое будет "уничтожено". Пример: Вход: 5 1 3 3 3 2 Выход: 3 Попробовал решить, но она далеко не всегда выдает правильные ответы. Прошу помочь мне разобраться, где ошибка. Мой код: Код:
|
27.01.2015, 22:11 | #2 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Наверное, нужно просматривать не в цикле for, а в while, и при очистке цепочки отступить на 2 элемента назад. На 2 элемента - потому, что удаляется по 3, но ранее они не были удалены.
|
27.01.2015, 23:18 | #3 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
|
|
28.01.2015, 01:15 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
8Observer8,
ничего игрок не может выбирать. Это же не игра, а олимпиадная задача - на входе количество и расположение шариков, программа должна определить, сколько шариков "схлопнется". |
28.01.2015, 07:07 | #5 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
|
|
28.01.2015, 07:07 | #6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Я бы писал отдельную функцию по поиску последовательности шариков и гнал бы ее по массиву. Функция должна понимать - количество элементов в массиве, стартовая позиция. А дальше дело техники.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
28.01.2015, 07:52 | #7 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
А я бы делал так :
бахнул список(хотя и массив зайдет).. но a[i] != цвету шарика.. a[i] есть кол-во шариков одного цвета, расположенных i-ыми в последовательности тоесть 5 1 3 3 3 2 Массив будет такой 1 3 1 Причем будем еще запоминать цвет. Поэтому будет структурка Дальше бы я тупо бегал по списку, пока мы можешь что-нить удалить Искал бы первый элемент > 3 и удалял его(это сделать нужно аккуратно, чтобы сложить в случае "одинаковости" цветов его соседей).. вот |
28.01.2015, 08:07 | #8 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
28.01.2015, 08:22 | #9 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Стоп.
5 - это вообще кол-во шариков Изначально получаем : 1 3 1 А уже потом удаляем и получаем 1 1 Решил написать Код:
Последний раз редактировалось Stilet; 28.01.2015 в 09:39. |
28.01.2015, 09:38 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
дело в том, что "засада" в данной задаче, имхо, в том, что схлопывания могут возникать циклически. например, дан ряд шариков (количество 9): 1 2 3 3 3 2 2 1 1 так вот, "схлопнутся" все 9 шариков (ответ 9) а если дан ряд: 1 4 2 2 2 2 3 3 1 1 то схлопнутся всего 4 шара. Если, как Вы предлагаете, переводить цвета в количество, то повторные схлопывания невозможно будет провести. А вот идея со списком мне нравится - в отличие от массива удаление из начала/середины списка не приводит к необходимости перемещать весь "хвост" на место удалённых элементов. p.s. на мой взгляд в коде автора темы нужно заменить цикл FOR на while(repeat) и повторять цикл, пока с новой строке есть серии подряд идущих элементов. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив | TheAnnihilyator | Помощь студентам | 1 | 04.06.2014 09:16 |
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... | Richik123 | Microsoft Office Excel | 1 | 16.10.2013 15:45 |
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] | TrueStyle777 | Помощь студентам | 3 | 29.05.2013 21:56 |
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} | Nickolai47 | Помощь студентам | 5 | 16.12.2012 14:51 |
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. | Marishkaa | Помощь студентам | 2 | 12.01.2010 16:54 |