Это мой первый пост в stackoverflow.
Мне нужно посоветовать алгоритм финансового приложения. Предположим, у нас есть 2 списка таких цифр (да, это банковские операции):
List 1 | List 2
-------------------------------------
1000 | 200
7000 | 300
3000 | 10000
16000 | 500
| 16000
| 4100
Мне нужно сопоставить цифры между собой с учетом некоторых условий:
Совпадения могут быть «один к одному», «один ко многим» или даже «многие ко многим». Итак, здесь два совпадения 16000 (один к одному), 1000 из списка 1 соответствуют 200 + 300 + 500 из списка 2 (один к трем), 10000 из списка 2 соответствуют 7000 + 3000 из списка 1 (один- to-two) и так далее.
Фигурку можно использовать более чем в одном матче.
Количество фигур в двух списках может быть одинаковым, а может и не совпадать.
Максимальное количество фигур в матче «один ко многим» должно быть установлено.
Матчи "многие ко многим" не обязательны. Но было бы хорошо, если бы они были и у нас!
Некоторые цифры могут остаться непревзойденными. Все хорошо.
Для этого я использую два сложных вложенных цикла. Это работает, но по мере того, как количество фигурок или максимальное количество фигурок в каждом матче увеличивается, на завершение уходит много времени!
Есть ли лучший алгоритм для этого?
300, 350, 450, 500
и вам нужно сопоставить800
в Списке 1. Есть два способа сделать это - как вы определите, какой из них правильный? - person RB.   schedule 14.02.2013