Я ищу алгоритм, который может принимать два набора целых чисел (как положительных, так и отрицательных) и находить подмножества внутри каждого из них, которые имеют одинаковую сумму.
Проблема похожа на проблема с подмножеством подмножества, за исключением того, что я ищу подмножества с обеих сторон.
Вот пример:
Список A {4, 5, 9, 10, 1}
Список B {21, 7, -4, 180}
Итак, единственное совпадение: {10, 1, 4, 9} <= > {21, 7, -4}
Кто-нибудь знает, существуют ли существующие алгоритмы для подобных проблем?
До сих пор единственное решение, которое у меня есть, - это подход с грубой силой, который пробует каждую комбинацию, но он выполняет в Экспоненциальном времени, и мне пришлось наложить жесткий предел на количество элементов, которые следует учитывать, чтобы избежать слишком длительного.
Единственное другое решение, о котором я могу думать, - запустить факториал в обоих списках и искать там равенства, но это все еще не очень эффективно и занимает экспоненциально больше, поскольку списки становятся больше.