Актуальной проблемой является рассадка зрителей в зрительном зале театра, кинотеатра, концертного зала и т.д. с соблюдением дистанции между занятыми местами. При этом желательно посадить в зале как можно больше зрителей, соблюдая минимальную требуемую дистанцию между местами. Зрительный зал представляет собой прямоугольник размером N × M, состоящий из единичных квадратов — мест. Расстоянием между местами будем считать сумму расстояний между ними по горизонтали и по вертикали. Расстояние между местами по горизонтали и по вертикали — это модуль разности их координат, считая, что расстояние между двумя соседними местами по горизонтали и по вертикали равно 1.
Например, на рисунке ниже изображён зрительный зал размером 3 × 4, в котором зрители сидят на трёх местах A, B и C.
Расстояние между местами A и B равно 3 (2 по вертикали плюс 1 по горизонтали), расстояние между местами B и C равно 3 (0 по вертикали плюс 3 по горизонтали), расстояние между местами A и C равно 4 (2 по вертикали плюс 2 по горизонтали).
Вам даны размеры зрительного зала N × M и минимальное расстояние между зрителями d. Вам необходимо разместить как можно больше зрителей в зале размером N × M так, чтобы расстояние между любыми двумя занятыми местами было не меньше d.
ответ нужно записать в виде N строк, каждая строка содержит M символов, равных 0 или 1. 0 обозначает свободное место, 1 обозначает занятое место.
Например, в зале размером 3 × 4 можно разместить максимум 3 человек на расстоянии не меньше 3. Пример такого размещения изображён на рисунке выше, а ответ в этом случае записывается так.
0100 0000 1001
Вам нужно дать ответ на несколько вариантов задания: 3-1, 3-2, 3-3, 3-4. На каждое задание ответ сдаётся на отдельной странице.
В задании 3-1 N = 3, M = 5, d = 2. В ответе должно быть 3 строки по 5 символов в каждой.
ОК, всё это циклы. 1) Цикл for (цикл с счётчиком), при этом при каждом шаге цикла счётчик увеличивается на 1. Пример: for a:=1 to 10 do //Цикл будет выполнен 10 раз 2) Цикл for (цикл с счётчиком), при этом при каждом шаге цикла счётчик уменьшается на 1. Пример: for a:=10 to 1 do //Цикл будет выполнен 10 раз 3)Цикл с постусолвием. Если условие не выполняется, выполняется цикл. Его особенность заключается в том, что цикл выполнится хотя бы один раз вне зависимости от условия. Пример: k:=0; repeat inc(k); until k<9 //10 раз 4)Цикл с предусловием. Пока условие выполняется, выполняется и цикл. Пример: k:=0; while k<>10 do inc(k); //10 раз
{Данная программа переводит любое сочетание символов ASCII в систему счисления заданную пользователем.}
//Pascal ABC.NET v3.0 сборка 1111
var a,i,b,r,n,j,bug:integer; s,se,slo,slof:string;
procedure preob(var a,b,n:integer; var se:string); begin repeat b:=a mod n; a:=a div n; str(b,se); s+=se; until (a<=n-1); end;
beginreadln(slo); readln(n); for j:=1 to length(slo) do begin; a:=ord(slo[j]); preob(a,b,n,se); str(a,se); s+=se; for i:=1 to length(s) div 2 do begin; se:=s[i]; s[i]:=s[length(s)-i+1]; s[length(s)-i+1]:=se[1]; end; write(s,'-'); slof:=slof+s; delete(s,1,length(s)); end; end.
Пример ввода: Домашняя работа на завтра. 2 Пример вывода: 11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-
{Таким образом, фразу "Домашняя работа на завтра." можно закодировать как "11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-".}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку