|
|
|
Пересечение массивов
|
|||
|---|---|---|---|
|
#18+
Парни, помогите решить задачу. Неважно на каком языке, сам алгоритм возможного решения мне непонятен: есть n массивов с цифрами. Параметрами приходят веса для каждого из них. от 0 до 3 И вот такую грязь надо намутить: Найти число, которое: есть во всех массивах с весом 0 и ( хотя бы в одном с весом 1 или во всех с весом 2) те, у которых вес 3 - не учитывать. Признателен заранее :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2015, 14:47 |
|
||
|
Пересечение массивов
|
|||
|---|---|---|---|
|
#18+
Вариант с полным перебором: * массивы от 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2015, 16:08 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=35&tid=1340969]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 385ms |

| 0 / 0 |
