Определить множество, содержащее наибольшее количество элементов, которые есть в других множествах - PascalABC.NET
Формулировка задачи:
Дано N множеств . Определить множество, какое содержит наибольшее количество элементов , которые есть в других множествах .
Начать, начал, а закончить не хватает сил, буду благодарен за помощь, приложил начало кода.
Решение задачи: «Определить множество, содержащее наибольшее количество элементов, которые есть в других множествах»
textual
Листинг программы
type mnj=set of byte; var b:array[1..20]of mnj; n,m,i,j,k,p,x,mx,imx:byte; begin randomize; repeat write('Количество множеств от 3 до 20 n='); readln(n); until n in [3..20]; repeat write('Маскимальная мощность множеств от 3 до 20 m='); readln(m); until m in [3..20]; writeln('Множества'); for i:=1 to n do begin b[i]:=[]; for j:=1 to m do begin x:=random(100); b[i]:=b[i]+[x]; end; write(i:2,')'); for k:=1 to 100 do if k in b[i] then write(k:3); writeln; end; mx:=0; imx:=0; for i:=1 to n do //перебираем все множества begin k:=0;//есть в других 0 for j:=1 to 100 do if j in b[i] then //если число есть в данном множестве begin x:=1; p:=0; while(x<=n)and(p=0)do //ищем его в других if(x<>i)and(j in b[x]) then inc(p)//если есть else inc(x); if p=1 then inc(k);//считаем end; if k>mx then //если больше текушего максимума begin mx:=k; //это максимум imx:=i; //его номер end; end; writeln('Наибольшее количество элементов , которые есть в других множествах'); writeln('содержит множество номер ',imx,' их количество=',mx) end.
Объяснение кода листинга программы
- Объявление переменных:
- mnj - тип данных, представляющий множество байтовых значений (set of byte)
- b - массив из 20 элементов типа mnj
- n, m, i, j, k, p, x, mx, imx - все типа byte
- Инициализация генератора случайных чисел
- Ввод количества множеств (n) и максимальной мощности множеств (m) с помощью функции readln
- Вывод списка множеств:
- Создание пустых множеств b[i] для каждого из n множеств
- Заполнение множеств случайными числами от 1 до 100
- Вывод номера множества и его элементов
- Поиск наибольшего количества элементов, которые есть в других множествах:
- Инициализация переменных mx = 0 и imx = 0
- Перебор всех множеств
- Для каждого множества:
- Инициализация переменной k = 0, которая подсчитывает количество элементов в других множествах
- Перебор всех чисел от 1 до 100
- Если число есть в текущем множестве, то:
- Увеличение переменной x на 1 и переключение в следующий цикл
- Если переменная x меньше n и p = 0, то:
- Если число j не равно i и j есть в b[x], то увеличение переменной p на 1
- Увеличение переменной x на 1
- Если p = 1, то увеличение переменной k на 1
- Если k больше mx, то:
- Установка mx = k
- Установка imx = i
- Вывод наибольшего количества элементов, которые есть в других множествах, и номера соответствующего множества
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д