Отново... да дам своята лепта - последните си 5 ст.
Аз пак да потретя - без Нагоденко и Нагласенко няма как да мине
всички изброени алгоритми искат/търсят
точно напасване - бр./цена към сума по фактура, но
има едно големо НО имало е отстъпки и надценки които са загубени завинаги - аз затова пред(по)ложих ..ако може да се извадят от касовия апарат тогава вече може да се търси точно напасване... (с истински монети винаги работи, но там винаги има 1 ст.)
т.е. ние даже масива Coins не знаем с какви 'монетки' да го запълним - анадънмо
Ако го зпаълним със складови цени (т.е. преди отстъпките/надценките) повечето фактури няма да матчнат нищо вж. примера който дадох по-горе с 40 лв което напр. не мачва нищо като складова цена защото е било продадено напр. 4 х 11 лв. (10) с 10 % отстъпка или 20 + 2 х 11 лв (10) с 10% отстъпка.
Каквито и комбинации, вариации пр. да правиш само с монети от 11 ст./лв. няма как да докараш цена от 40 (а то такива ситуации ще има)
т.е. без реалните 'монетки' нищо няма да се напасне - без Н&Н
П.П. Единствентоо което мога да предложа като по-лесно е да се модифицира лекинко кода на ВМ (вместо == 0, да стане близо до 0-та) и да пуска, то ще му ги вади +/- 5 ст. (или там колкот си го нагласи) и ще им праска 5ст. надценка/отстъпка и ..те така...
По-правилния начин е, ако се знаят артикулите по тия фактури (няма как да се мине без инвентаризация), да се ползва SA алгоритъма, застопоряваш фактурите (в някакъв ред - да кажем най-скъпа, към най-евтина) и пробваш пермутации на цените само - алгоритъма за разлика от дугия който е брут форс, може да се спре по всяко време и да се принтира най-доброто решение (за момента) - като оптимизацията е върху всички фактури/цени едновременно т.е. всичките по-горни алгоритми работят 1 по 1 фактурите и не вземат предвид че натамънявайки баш тази, може да се прецакат в последствие - напр.
фактури: 11+7+4 = 22 = 11 + 7 + 4 (най-простото по един артикул)
(това е оригиналното разпредление, което не го знаем а се опитваме да отгатнем)
артикули/цена: 11 х 1, 7х1, 4х1
и алгортъма ако прецени да мачне напр. така първата и.. другите ще се прецакат
11 = 7х1 + 4х1
7 = ?? (от 11 на цяло)
4 = ?? (от 11 на цяло)
имайте предвид че горния пример е много опростен, но има и наличности т.е не можеш да продаваш повече отколкото имаш налично в склада, и точно те са тясното място, за прецакване... за пълнота представете си че в примера още имаме и налични 100 бр. по 5.50 - могат да развалят 11 на цяло на 2х5.5 и цялостното разпределение пак е прецакано, щото имало само 1 х 7 налично, ама то отишло за нещо друго.
така че, щеш не щеш, трябва да се търси (най-добро) напасване на всички фактури едновременно. SA ще свърши работа - 1) ще оптимизира на цяло - всичките наведнъж; 2) може да се прекъсне по всяко време а не да се чака да извърти N! факториел варианти - е, може и никога да не достигне оптималното решение (ама то както вече видяхме е невъзможно без истинските монети, след намаления и надценки от касовия апарат), но ще даде достатъчно добро приблиежение така че накрая с мин, Н&Н да се оправи човек и на ръка, тук бонбонче, там пиронче, де малко аванта де малко надценка да ги докара
- пълно възстановяване на оригиналнот състояние е невъзможно (не и без оригиналните 'монетки' където 'монета' е ед. крайна цена на артикул т.е. след намаление/надценка и т.п. т.е. ще има монети 3.50, 2.11 и т.н., а 1 ст. може и да няма въобще, ако има - да изписва всичко по 1ст N пъти, ама ще изглежда подозрително.
Толкоз от гл.т. на математиката.
П.П. Гого, не искам да те отказвам ама... СА не е от най-лесните алгоритми, по-скоро модни Вендинга или ползвай на колегата алгоритъма и накрая с малко Н&Н...
..подозирам че колегите ти (от ръчен труд и творчество) със МНОГО Н&Н са работили, а... традициите трябва да се поддържат
П.П.П. А каква е целта на цялото това занятие - аз така и не разбрах, за шефа ли (парите са се толкоз), за данъчни нещо... т.е. сумите (ама те си отговарят), за склада(джийката) нещо - ама там тъй като пак опираме до ЯКО Н&Н там па въобще няма да отговарят артикулите (дори и да го нагласиш някак си), та въпросът е открит - ЗАЩО? Наличностите в склада все няма да отговарят...
Признавам си без бой - убягват ми ненаучно базираните алгоритми
а тука вече яко навлязохме в сферата на ненаучната фантастика...