Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы (интересно)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vovsik
Вот задачка: даны два неубывающих массива целых чисел (размерностями k и l). Найти число различных элементов среди них. И вот в чем весь прикол: ЧИСЛО ДЕЙСТВИЙ - ПОРЯДКА СУММЫ РАЗМЕРНОСТЕЙ ЭТИХ МАССИВОВ (K+L)
kile
лол
BlackShadow
Код

Type
 TArray=Array[Integer] Of Boolean;

Var
 i,n:Integer;
 Present:^Taray;

Const
 k=...;
 l=...;
 m1:Array[1..k] Of Integer = (...);
 m2:Array[1..l] Of Integer = (...);

Begin
 New(Present);
 For i:=-32768 To 32767 Do
   Present^[i]:=False;
 For i:=1 To k Do
   Present[m1[i]]:=True;
 For i:=1 To l Do
   Present[m2[i]]:=True;
 n:=0;
 For i:=-32768 To 32767 Do
   If Present^[i] Then
     Inc(n);
 WriteLn(n);
 Dispose(Present)
End.

Сложность реализации оценивается как O(k+l).

kile, а что такое "лол"?
Dark
BlackShadow лол это lol.gif
BlackShadow
Я даже догнал, что "лол" относился к названию темы. Это уж точно: полный "лол" lol.gif
vovsik
задание По-внимательнее прочитайте! Пример:
1 массив: 1 1 2 3 5
2 массив: 1 2 2 4
число различных элементов=3
kile
vovsik, а не стыдно такое спрашивать ?? это не такая уж и сложная задачка, чтобы ее не решить...
у меня сестра рядом... 7 класс... твою задачку за 20-30 минут на паскале написала. сама, без моей помощи.
vovsik
ну, если не сложно, выложи ее! Просто код не работает толком
BlackShadow
Задание по-понятней писать надо.
А то что получается:
Код

n:=0;
For i:=1 To Min(k,l) Do
 If m1[i]<>m2[i] Then
   Inc(n);
WriteLn(n)

Так что ли?
сложность тогда тут по-меньше будет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.