Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
IceCortez
25 / 25 / 42
Регистрация: 25.03.2014
Сообщений: 233
#1

Шарики - Pascal ABC

05.12.2014, 20:23. Просмотров 655. Ответов 3
Метки нет (Все метки)

В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется
непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики
при этом сдвигаются друг к другу, и ситуация может повториться.
Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас
http://www.cyberforum.ru/pascalabc/thread316115.html
уничтожено. Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный
может быть не более одной.

Ввод
10 3 3 2 1 1 1 2 2 3 3
Вывод
10

В решении обязательно должен использоваться стек

Добавлено через 7 минут
Достаточно просто алгоритма

Добавлено через 1 час 12 минут
Up.

Добавлено через 1 час 15 минут
Up.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2014, 20:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шарики (Pascal ABC):

Игра «Прыгающие шарики 1»
«Прыгающие шарики 1». Исходная позиция - 8 лунок, в которых лежат отдельно 4...

Программа отображает разноцветные шарики, которые движутся прямолинейно внутри области изображения
«Squash-2». Программа отображает разноцветные шарики, которые движутся...

Шарики
Помогите пожалуста решить задачку через одномерный массив) В одной...

Узнать за какое минимальное время (в минутах) будут надуты все шарики при оптимальной работе всех участников.
Школьный бал Во время проведения школьного бала планируется запустить m...

Объекты.Игра "Шарики и кубики"
При запуске «Шарики и кубики» на чистом экране появляются правила игры – список...

3
destap
0 / 0 / 1
Регистрация: 05.12.2014
Сообщений: 12
05.12.2014, 20:50 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var
   a,a1:array[1..1000]of integer;
   n,k,k1,i,i1,i2,n1:integer;
begin
     read(n);
     for i:=1 to n do
         read(a[i]);
     writeln;
     n1:=n;
     k:=3;
     while k>=3 do
           begin
           k:=0;
           k1:=0;
           i:=2;
           while i<=n do
               begin
               if a[i]=a[i-1] then
                  begin
                  k1:=k1+1;
                  if k<=k1 then
                     k:=k1+1;
                  if i=n then
                     begin
                     if k>=3 then
                        for i1:=1 to i-k do
                            a1[i1]:=a[i1]
                     end
                  end
               else begin
                    if k<=k1 then
                       k:=k1+1;
                    k1:=0;
                    if k>=3 then
                       for i1:=1 to i-k-1 do
                           begin
                           a1[i1]:=a[i1];
                           i:=n
                           end
                    end;
               i:=i+1
               end;
           if k>=3 then
              begin
              i1:=i1+1;
              if i1+k-1<>n then
                 begin
                 for i2:=i1+k to n do
                     begin
                     a1[i1]:=a[i2];
                     i1:=i1+1
                     end
                 end;
              n:=n-k;
              for i:=1 to n do
                  a[i]:=a1[i]
              end
           end;
     writeln(n1-n)
end.
0
кот Бегемот
Платежеспособный зверь
8447 / 3886 / 1511
Регистрация: 28.10.2009
Сообщений: 10,062
06.12.2014, 01:49 #3
Очень длинная ваша программа и путанная.
Вот так гораздо короче и проще:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var
n,i,c,k,rez:integer;
a:array[0..1000]of integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
c:=n;
k:=1;
rez:=0;
while c>0 do
 begin
   c:=c-1;
   if a[c]=a[c+1] then inc(k)
  else
     begin
      if k>=3 then
        begin
        for i:=c+1 to n-k+1 do
        a[i]:=a[i+k];
        n:=n-k;
        rez:=rez+k;
        c:=n;
        end;
     k:=1;
    end;
end;
writeln(rez);
end.
0
IceCortez
25 / 25 / 42
Регистрация: 25.03.2014
Сообщений: 233
06.12.2014, 19:54  [ТС] #4
В решении обязательно должен использоваться стек

Добавлено через 7 часов 4 минуты
Up.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 19:54
Привет! Вот еще темы с решениями:

Завод производит шарики для подшипников. Бракуются шарики, диаметр которых отличается от стандарта на 0,1 мм. Найти дисп
Завод производит шарики для подшипников. Бракуются шарики, диаметр которых...

Шарики
Привет всем) При первом нажатии шарик становится красным, как сделать что бы...

Шарики
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда...

шарики
в коробке шарики: 1)если шар светлый,то он может быть маленьким тогда и только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru