41
печатать. При этом следует учитывать, что общее количество
нажатий кнопок не должно превышать С и что полученное
решение не должно совпадать с найденным ранее. Для
реализации последней подзадачи все найденные уникальные
решения, общее количество которых не может превосходить 16,
будем запоминать, а каждое новое найденное решение будем
сравнивать с уже запомненными лишь в случае его
уникальности также запоминать и печатать.
Реализацию описанного алгоритма на Паскале легко
произвести с помощью такого типа данных, как множество,
состоящее не более чем из четырех элементов, каждый из
которых описывает одну группу лампочек. Так , например, если
для одного из вариантов нажатия кнопок мы определили
множество включенных ламп s, а из входных данных задачи
известны множества действительно включенных ламп – on –
выключенных – off, то данный вариант нажатий допустим, если
(on<=s) and (off<=[1..4]-s. Здесь множество [1..4]-s обозначает
выключенные при данной комбинации нажатий лампы . В случае
использования для проверки подобных условий массивов
решение задачи становиться более громоздким.
Program lamp;
type t=set of 1..4;
var
c,i1,i2,i3,i4,m,n,j,i,k:integer;
on,off,s:t;
contr:array [1..16] of t;
flag:boolean;
procedure ReadData;
begin
assign(input,'party.in');
reset(input);