У меня есть функция C, которая производит около 6 миллионов уникальных массивов.Эти массивы всегда имеют 17 элементов каждый, и каждый элемент представляет собой целое число от 0 до 16. У меня также есть слегка модифицированная версия этой функции, которая также будет генерировать около 6 миллионов уникальных массивов одного типа.Моя проблема в том, что второй дает примерно на 45 000 результатов меньше, чем первый, и я хотел бы посмотреть, что это за результаты.
Поэтому мой подход заключается в том, чтобы просто сохранить все результаты второй функции (калькуляторговорит мне, что это не должно занимать более 400 МБ, что хорошо для хранения в памяти), а затем искать результаты первого, распечатывая несуществующие.
Предполагая, что общий подход делаетсмысл (а если нет, то скажите), что мне нужна соответствующая структура данных (в идеале с хорошей реализацией в C), которая может содержать около 6 миллионов уникальных перестановок
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
(или некоторыхпреобразование), а затем выполнить быстрое тестирование членства на них.Как следует из названия, у меня есть некоторые подозрения о том, какие структуры данных могут выполнять эту работу, но я не уверен, что попытки или хеш-карты являются лучшим выбором для этого.
Это алгоритм для обнаружения ошибки в другомалгоритм, а не то, что будет использоваться в производстве.Я заинтересован в том, чтобы сделать это так, чтобы кодирование и выдача результатов были относительно быстрыми с человеческой точки зрения, а не с необходимостью экономить миллисекунды, поэтому наличие простых в использовании библиотек, которые будут выполнять большую часть работы, безусловно, плюс.