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

Шарики

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

В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется
непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики
при этом сдвигаются друг к другу, и ситуация может повториться.
Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас
уничтожено. Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный
может быть не более одной.

Ввод
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
Ответы с готовыми решениями:

Не отскакивают шарики
Помогите пожалуйста, я не могу сделать так, чтобы шарики тоскакивали от стенок...

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

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

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

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

3
destap
0 / 0 / 0
Регистрация: 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
кот Бегемот
Платежеспособный зверь
8465 / 3911 / 1523
Регистрация: 28.10.2009
Сообщений: 10,141
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 мм. Найти дисп
Завод производит шарики для подшипников. Бракуются шарики, диаметр которых...

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


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

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

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