|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.02.2015, 22:44 | #11 | |||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Тогда давай так : Будем использовать С++шный шаблон - set. Позволь сразу пояснить, эта структура позволяет находить, удалять, вставлять элемент за O(log N). Имеет это чудо вид дерева.. Вот.. Но есть один момент, который позволит решить 1-ую проблемку : set игнорирует дубликаты Вот и все Даже сортировка будет не нужна. Просто будет по одному элементы добавлять в set. Цитата:
Поэтому позволь не засчитать этот аргумент) Цитата:
|
|||
04.02.2015, 23:14 | #12 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
А этот шаблон сходен по операциям с паскальными множествами? Если да, то от программы совсем ничего не остаётся - только ввод, умножение (пересечение) и вывод.
|
04.02.2015, 23:26 | #13 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Думаю, ты спросил не об этом, но всё же на всякий :
Паскалевское множество - это битовый массив. Плюсовский вариант - намного сложнее. Там дерево и плюшки к нему Теперь про твой вопрос : Угу. Будет просто set<int> s; Дальше в цикле int t; cin >> t; s.insert(t); А потом уже ищем : if (s.find(s.begin(), s.end(), t) != s.end()) вывести И еще можно удалять элемент, чтобы повторно его не выводить s.erase(а тут нужен итератор, который мы видимо будем сохранять до развилки, а затем использовать и в развилке и при удалении) Программа станет очень короткой.. Уж пардон за код.. С телефона не ахти |
05.02.2015, 00:07 | #14 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Да. Об этом. Не вдаваясь во внутреннее представление.
Думал, что раз для задачи ищем пересечение множеств, то можно было бы как в паскале: заменить массивы на множества А и В, а потом результат функции Result:=( (A*B)<>[]) и распечатка пересечения в цикле. Конечно, у паскаля там сильные ограничения. Но в С реализация иная и ограничений почти нет. Может в С есть подобная реализация пересечения, тогда и от поиска можно отказаться. Хотя с исчезновением ТС это носит теоретический характер. |
05.02.2015, 00:43 | #16 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Спасибо.
По ссылке как бонус к теории готовое решение задачи. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одномерные массивы, двумерные массивы, строки | Sand093 | C++ Builder | 11 | 20.05.2012 21:48 |
Нужна функция =сцепить(), только с условием | Snekich | Microsoft Office Excel | 8 | 20.11.2011 18:18 |
одномерные массивы | innaa639 | Помощь студентам | 7 | 18.10.2011 10:34 |
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент | LyaLya | Помощь студентам | 15 | 20.12.2009 14:12 |
C++/ Одномерные массивы | BennyBenassy | Общие вопросы C/C++ | 6 | 23.02.2009 14:27 |