Определить множество, которое содержит наибольшее количество элементов, которые есть в других множествах - PascalABC.NET
Формулировка задачи:
Дано N множеств. Определить множество, которое содержит наибольшее количество элементов, которые есть в других множествах.
Решение задачи: «Определить множество, которое содержит наибольшее количество элементов, которые есть в других множествах»
textual
Листинг программы
begin
var tmp : Integer;
var n := ReadLnInteger('n = ');
var s : array of Set of Integer;
SetLength(s, n);
for var i := 0 to n-1 do
begin
var st := ReadLnString('Введите через пробел элементы ' + (i+1) + ' множества:');
foreach var tt : String in st.ToWords(' ') do
if TryStrToInt(tt, tmp) then
s[i] += [tmp];
end;
WriteLn('Введены множества:');
foreach var st : Set of Integer in s do
WriteLn(st);
var maxcount := 0; var snumber := -1;
for var i := 0 to n-1 do
begin
var count := 0;
foreach tmp in s[0] do
begin
var find := false;
for var j := 0 to n-1 do
if i <> j then
find := find or (tmp in s[j]);
if find then count += 1;
end;
if count > maxcount then
begin
maxcount := count; snumber := i;
end;
end;
WriteLn('Множество, которое содержит наибольшее количество элементов, которые есть в других множествах: ', s[snumber]);
end.
Объяснение кода листинга программы
- Ввод количества множеств и их элементов
- Создание массива строк для хранения введенных множеств
- Чтение количества множеств
- Инициализация массива множеств
- Чтение элементов каждого множества
- Поиск наибольшего количества элементов во всех множествах
- Определение индекса множества с наибольшим количеством элементов
- Вывод результата