Но сега се сещам, че те банкоматите, че и монетните апарати са едномерни пространства, а аз работя в двумерно.
Освен, че трябва да докарам парите до стотинка, то трябва да наглася и бройките. Което ме навежда на мисълта, че трябва да гоня парите само приблизително, а бройките точно. Това приблизително да е малко под желаното. След, което да завиша с някакъв процент всички продажби, така, че да докарам и парите.
Заначи това дето ти го предложих върти (първо) комбинации по бройките - по n-овете а след това гледа парите дали ще излязат на някоя комбинация. Ако имаш в предвид това за многомерно - то е едномерно, щото върти по n.
(Само сега да не пръкне някой подкован математик и да каже че и двамата сме в грешка и било N-мерно пространство
)
Предлагам ти следният варянт:
n1 [90-110]
n2 [ 40-50]
n3 [10-20]
n4 []
if ( N != (n1 +n2 +n4 +n4) ) continue;
n1*s1 + n2*s2 + n3*s3 + n4*s4
равно ли е (прилича ли) на S?
В най-вътрешният първо отхърляш всични невъзможни комбинации за N.
След това смяташ сумата S. Ако прилича на S изпринтваш n1, n2, n3, n4 - това е едно от решенията.
В най-външният цикъл задаваш предполагаемите бройки продажби [90-110] от 90 до 110 бройки, които трябва да върти за най-скъпият артикул.
Във следващият [ 40-50] на следващият по-малко скъп но все още ценен и т.н.
А в най-вътрешният са най дребните артикули с най-ниска цена и за тях може ако искаш изобщо да не задаваш тесен интервал на симулация ами да си бъде [0 - бройката_в–склада].
Като задаваш началите условия в интервал, така както на око преценяш кое от колко се продало, пускаш една симулация и чакаш докото извърти и изпише възможна комбинация за цената.
--------
Сега тука има едно Но:
Така със вложени един в друг цикли се извъртяват всички възможни комбинация. Това си е един брояч - подобен на километража на колите......
Но от практическа гледна точка за 100 артикула не може да имаш 100 вложени цикъла един в друг. Предполагам че това с вложените цикли може да се опише програмнно по друг начин. Някой тук от спецовете по програмиране ще знае как става.
Може би с рекурсия (но мен от рекурсия ме боли глава).