Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 17

Перекраска клеток

20.07.2015, 15:38. Показов 4301. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано клетчатое поле N x M, все клетки поля изначально белые. Автомат умеет:

закрасить клетку (i,j) в черный цвет.
для клетки (i,j) узнать её ближайших белых соседей по вертикали и горизонтали.

Дана последовательность команд для автомата. Требуется выполнить эти команды в указанной последовательности, и для каждой команды запроса ближайших белых соседей указать результат ее выполнения.
Входные данные

Сначала вводятся размеры поля N и M (1 ≤ N ≤ 20, 1 ≤ M ≤ 50000), затем количество команд K (1 ≤ K ≤ 105), а затем сами команды. Команды записаны по одной в строке в следующем формате:

Color i j — окраска клетки (i,j) в черный цвет;
Neighbors i j — нахождение белых соседей для БЕЛОЙ клетки (i,j).

1 ≤ i ≤ N, 1 ≤ j ≤ M.
Выходные данные

На каждый запрос Neighbors требуется вывести сначала количество ближайших белых соседей (или 0, если ни с одной из сторон белых клеток не осталось), а затем их координаты (соседей можно перечислять в произвольном порядке). Если запросов Neighbors нет, ничего выводить не надо.

Начало решения я понял. Можете объяснить,пожалуйста,как реализовать нахождение этих соседних клеток?
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
uses crt;
type st=record
     s: string;
     x,y: integer;
     end;
var i,j,n,m,k,kil,l,imin,kl: integer;
    s1: string;
    a: array [1..20,1..50000] of integer;
    b: array [1..10000] of st;
procedure stroka(var b: st; s: string);
Var i: integer;
Begin
     s:=s+' ';
     i:=1;
     b.s:='';
     while s[i]<>' ' do
     Begin
          b.s:=b.s+s[i];
          i:=i+1;
     End;
     i:=i+1;
     b.x:=0;
     while s[i]<>' ' do
     Begin
          b.x:=ord(s[i])-ord('0');
          i:=i+1;
     End;
     i:=i+1;
     b.y:=0;
     while s[i]<>' ' do
     Begin
          b.y:=ord(s[i])-ord('0');
          i:=i+1;
     End;
End;
begin
     read(n,m,k);
     for i:=1 to k do
     begin
          read(s1);
          stroka(b[i],s1);
     end;
     for i:=1 to k do
     begin
         if b[i].s='Neighbors' then begin inc(kil); a[b[i].x,b[i].y]:=1;   end
         else if b[i].s='Color' then a[b[i].x,b[i].y]:=0;
     end;
     if (kil<>0) then
     BEGIN
     writeln(kil);
     //тут нужно написать нахождение соседних клеток
     END;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2015, 15:38
Ответы с готовыми решениями:

Количество пустых клеток для кроликов
Фермер Джон решил разводить кроликов. Он купил N (1&lt;=N&lt;=100) клеток, в каждую поселил A (0&lt;=A&lt;=1000) кроликов. Но фермер уже очень...

Определить сколько клеток амебы будет через 3, 6, 9, 12, , 24 часа
2. Напишите программу для решения задачи. Одноклеточная амеба каждые 3 часа делится на 2 клетки . Определить сколько клеток будет через 3,...

Определить, через сколько часов количество амеб достигнет 50 клеток?
Амеба каждые 3 часа делится на 2 клетки. Через сколько часов количество амеб достигнет 50 клеток?

1
26 / 26 / 17
Регистрация: 08.04.2012
Сообщений: 202
26.07.2015, 17:07
Петров, код писать лень и в твой я не вникал, но логика работы такая в твоем массиве клеток
Pascal
1
a: array [1..20,1..50000] of integer;
по умолчанию все значения в массиве в паскале насколько я помню равны 0. Вот дали тебе координаты i,j и закрась эту клетку присвоив значение 1 например.
Pascal
1
a[i,j]:=1;
теперь проверка на белые клетки еще проще опять предположим тебе даны координаты i,j
Pascal
1
2
3
if a[i,j]==1 then writeln("сообщение с ошибкой это клетка как ты писал должна являться белой")
else if (a[i-1,j]=1) and (a[i+1,j]=1) and (a[i,j-1]=1) and (a[i,j+1]=1) then writeln(" по соседству нет белых клеток 0");
if (a[i-1,j]=0) // одна из соседних клеток белая и так далее
Но тебе нужно учитывать(я облегчил себе задачу и не учитывал) что если i=0, то проверку i-1 надо исключить, и т.д.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2015, 17:07
Помогаю со студенческими работами здесь

Вывести на экран координаты клеток, на которые может ходить конь
Даны натуральные числа k,l(k&gt;=1,l&lt;=8). На клетке (k,l) расположена шахматная фигура конь Вывести на экран координаты клеток, на которые...

Сколько различных квадратов можно обвести в прямоугольнике из NxM квадратных клеток?
Подскажите, где искать зависимость для составления алгоритма? На площади смотреть? Вот задача Подсчитать, сколько различных квадратов...

Олимпиада по программированию. В выходной потек вывести единственное число - количество пустых клеток в данной комнате
Извените что на укр. ибо срочно. 1)Найти площадь комнаты в квадратном лабиринте. Формат входных данных. В первой строке входного...

Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через n часов
Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3,6,9,...,24 часа. Очень прошу написать...

Найдите максимальную красоту среди красот всех клеток и количество клеток, имеющих такую красоту
Помогите с Олимпиадой задачкой. Проходит не все тесты: Видимость звездочек (упрощенная версия) ограничение времени на тест: 1...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru