Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 4

Шарики

26.03.2010, 14:41. Показов 4187. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуста решить задачку через одномерный массив)
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться. Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас уничтожено. Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный может быть не более одной. Даны количество шариков в цепочке (не более 1000) и цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число). Требуется вывести количество шариков, которое будет уничтожено.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2010, 14:41
Ответы с готовыми решениями:

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

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

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

7
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
31.03.2010, 07:32
Что-то вроде этого...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define N 1000
/**************/
main()
{ int B[N];  // Цвета шариков
  int n, i, j, k, x;
   n = N;
   for(j=n-1; j>=2; j--) {
     if (B[j]==B[j-1] && B[j-1]==B[j-2]) {  // три шарика
        for(i=j-3; i>=0; i--)  // А вдруг еще есть
          if (B[i] != B[i+1]) break;
        k = j - i;  // Убираем k шариков
        for(x=0; x<k; x++) B[i+x+1] = B[j+x+1];  // Сдвиг цепочки
        j = j - k + 2;
        n -= k;
        if (j>n) j = n;
     }
   }
}
/**************/
(Не тестил - только идея)

Добавлено через 3 минуты
Повнимательнее прочел условие - найти КОЛИЧЕСТВО уничтоженных шариков
В начале U = 0;
После 12-й строки
U += k;
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
31.03.2010, 10:04
Day, вы всерьёз считаете, что ваша программа на Паскале?
0
31.03.2010, 10:22

Не по теме:

Повнимательнее прочел условие
Еще бы и название раздела прочитали.

0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
31.03.2010, 13:48
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Day, вы всерьёз считаете, что ваша программа на Паскале?
Нижайше прошу прощения у почтенной публики! Виноват!
Но дело в том, что топик совсем недавно был господами модераторами перемещен в паскалевский раздел. Когда я его встретил (вчера) и когда отвечал (сегодня утром), он болтался в "Технологии программирования" и о языке я догадаться , вот балда! никак не мог.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.03.2010, 13:57
Day, Приносим свои извинения.
1
williamxer
31.03.2013, 10:29
Day, можете переписать на паскаль программу "шарики"
12 / 12 / 6
Регистрация: 15.01.2015
Сообщений: 36
03.11.2017, 20:11
Кому поможет - реализация строкой
C++
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
#include <iostream>
#include<cmath>
using namespace std;
 
int g(char s)//берем код числа из строки
{
    return int(s) - 48;
}
int main()
{
    int n;
    cin >> n;
    string s = "";
    for(int i = 0;i < n;i++)
    {
        int curr;
        cin >> curr;
        s += char(curr + 48);
    };
    int crush = 0;
    while(true)
    {
        int crushed = 0;int l = g(s[0]) , c = 1 , i = 1;
        while(i <= s.length())
        {
            if(g(s[i]) == l)
            {
                c++;
            }
            else
            {
                if(c >= 3)//если длинна больше или равна трем
                
                {
                    crushed += c;//добавляем к переменой  количества уничтоженных за текущий проход
 
                    s.erase(max(0 , i - c), c);
                    //cout<<"\t" << s << endl;
                    //cout << s << endl;
                    i-=c;
                }
                c = 1;
            }
            l = g(s[i]);
            i++;
        }
        crush += crushed;//добавляем к общему количеству
        if(crushed == 0)//если ничего не уничтожено, то выходим из цикла 
            break;
    }
    cout << crush;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.11.2017, 20:11
Помогаю со студенческими работами здесь

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

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

Мигающие шарики
Привет, форумчане! Подскажите, как запустить мигающие шарики? Должны сначала загораться красные, потом жёлтые. Методичка по этому...

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

Отталкивающиеся шарики
Здравствуйте! program obj; uses graph,crt; type chast=object x,y,xs,ys:integer; vx,vy:integer; r,c:word;


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru