powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пересечение массивов
3 сообщений из 3, страница 1 из 1
Пересечение массивов
    #39013436
VanillaNInja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни, помогите решить задачу. Неважно на каком языке, сам алгоритм возможного решения мне непонятен:

есть n массивов с цифрами. Параметрами приходят веса для каждого из них. от 0 до 3
И вот такую грязь надо намутить:
Найти число, которое:
есть во всех массивах с весом 0 и ( хотя бы в одном с весом 1 или во всех с весом 2)
те, у которых вес 3 - не учитывать.


Признателен заранее :-)
...
Рейтинг: 0 / 0
Пересечение массивов
    #39013559
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант с полным перебором:
* массивы от 1 до N назовём A1..AN (array)
* ищем в каждом массиве указанное число x. Получаем битовую маску Vx (value). Её i-й бит будет равен 1, если x найден в Ai, и 0 - если не найден.
* для каждого веса k = 0..3: строим битовую маску Wk (weight). Её i-й бит будет устанавливаться, если массиву Ai назначен вес k
* переформулируем теперь задачу:
** Vx AND W0 = Vx // есть во всех массивах веса 0
** Vx AND W1 > 0 // есть хотя бы в одном с весом 1
** Vx AND W2 = Vx // есть во всех с весом 2
** (ничего не делать) // те, у которых вес 3 - не учитывать
итоговый предикат:
Код: plaintext
1.
2.
3.
 (Vx AND W0 = Vx) AND (
  (Vx AND W1 > 0) OR
  (Vx AND W2 = Vx)) 
Т.е. задача сводится к проверке предиката для всех чисел массивов. Дубликаты нужно отсеивать (т.е., пользуясь формулировкой SQL, выборка всех чисел массивов должна быть DISTINCT), а для этого массивы нужно сначала единообразно отсортировать. Обратите внимание, как ускоряется построение Vx в этом случае!
...
Рейтинг: 0 / 0
Пересечение массивов
    #39013790
VanillaNInja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам огромное за помощь!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пересечение массивов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]