Задача 6.
Даны две целочисленных таблицы А [1:10] и В[1:15]. Разработать алгоритм и написать программу, которая проверяет, являются ли эти таблицы похожими. Две таблицы называются похожими, если совпадают множества чисел, встречающихся в этих таблицах.
|
Решение задачи 6.
Мы можем отсортировать оба массива - и A, и B (например, по неубыванию), далее, если первые элементы массивов A и B совпадают, то ищем и в A, и в B минимальные элементы, большие данного, и повторяем сравнения; если же элементы не совпадают, либо один из массивов уже закончился, а другой еще нет, то массивы не похожие.
{A и B уже отсортированы}
i:=1; j:=1; {смотрим массивы A и B, начиная с первых элементов}
while (i<=10) and (j<=15) and (A[i]=B[j]) do
begin
element:=A[i];
while (i<=10) and (A[i]=element) do
i:=i+1; {поиск несовпадающего элемента}
while (j<=15) and (B[j]=element) do
j:=j+1; {поиск несовпадающего элемента}
end;
if (i=11) and (j=16) {просмотрели все элементы A и B}
then writeln('Массивы похожи')
else writeln('Массивы непохожи');
|