Май вярно съм прегрял. Няма как да е невъзможно. Всъщност по този начин сваляме до едномерно пространство и става възможна задача. Май трябва да преспя и утре просто да пробвам.
Аз може да съм прост инженер и затова да не разбирам защо не обръщаш внимание на идеята за разделяне на големия проблем на два по-малки и отделното им решаване:
1. Имаш крайно множество от цени;
2. Имаш крайно множество от артикули (с цени от първото множество);
3. Имаш една крайна сума.
———
1. Намираш някаква комбинация¹ от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация;
3. Генерираш отчета (фиктивен явно) за продажбите за съответния месец.
———
Има какво да се оптимизира, но за това по-нататък.
Сега по-ясна ли става идеята или пак нищо не съм обяснил?
———
¹ комбинация не е най-точният термин в случая, но засега ще го оставим така.
Преди да се обърна специално към теб, дължа нещо на другите включили се с неоценима помощ.
Направо отиди най-долу.
=*=
Все пак събрах малко сили и започнах да обобщавам темата за себе си.
Имам дадени решения от няколко човека.
БЛАГОДАРЯ НА ВСИЧКИ!!!
Решението на Ласков би ми дало най-близък до действителността отговор, но при тези условия не е съвсем осъществимо.
Решение ми беше дадено и от Стелт. То е работещо, ако и имахме истински данни. Но при неистински данни то ни отдалечава още повече.
Решение даде и Джет. Това решение изглежда „просто“, но изисква подготовка. Оставям си го за изпробване на един бъдещ етап, когато ще имам събран опит с този конкретен казус. Харесвам го и е близко до някои от първоначалните ми, блуждаещи мисли. А то моите всички са такива.
Както каза Дантгуин, първо да имаме някакво решение, пък после ще го донагласваме. Пък и това си е по закона на Линус.
Решение даде Ремо. Както се очаква от толкова висок професионалист, то е теоретично яко подковано, сложно, шармантно и удивително. Ще се опитам да го направя. Досегашния ми опит показава, че негови идеи ми трябва по година, за да стигна до етапа, където мога да ги реализирам. Но са винаги блестящи, просто аз съм кух и бавноразвиващ. Обезателно ще се пробва.
Решение даде Йордан. То е разлято върху поне десет страници, най-подробно документирано и с вложена много енергия. На всичкото отгоре е лесно осъществимо дори от тъпак от моя ранг.
Мисля, че до този момент на него забравих да му благодаря в темата. Това никак не е честно. Крайно време е да се поправя.
Ти си истински отдаден човек и за мен е чест, че те познавам. Повече от поласкан съм, че ми отдели толкова време и търпение. Благодаря!=*=
Сега дойде ред да обърна внимание на решението, което предложи два пъти. Харесвам това в него, че не е комплексно сложно. Или поне е такова, докато не се запозная с детайлите.
=*=
Задължителния OFFTOPIC
Казваш, че си прост инженер, но прости инженери няма. Не може да си изучил всичко, което учи, кой да е инженер и да останеш прост, дори преди това да си бил такъв. А и преди това не си бил, защото не може да те приемат в произволен ТУ, ако преди това цял живот не си спал със сборниците от задачи по математика.
Обаче прости инженери може да няма, но икономисти има. Може на петнадесет да си играл на двора, на шестнадесет да си почнал да гониш срещуположния пол, да си се наквасил с прилично количество алкохол, след няколко години да се е паднала единствената тема, която да си чел, да са те приели на магия, да си изкарал на магия, докато си продължавал да се наливаш с алкохол и да гониш фустите.
Накрая незнайно как да станеш любимец на част от преподавателското съсловие и някак си почти да успееш да завършиш. Но това не става преди да си направил няколко деца, да си ходил да набиваш крак на плаца и други странични занимания. И накрая да развиеш за отрицателно време шеметна кариера, която да се срине из под теб, защото са настъпили неблагоприятни условия. Да караш криво-ляво и да завършиш някъде си, ако ти се е усмихнало щастието.
През цялото това време може да си спал, изобщо да не си се развил в нищо, да си надебелял, да си оплешивял, да си пуснал брада и единственото ти достойнство е, че тровиш хората по форумите с несвързани дрънканици. И то докато си трезвен, защото не можеш да си позволиш да дадеш 5,60 за 5 л фалшиво вино, а ти се пие като на Калин Терзийски, ама разликата е, че си по-млад и си типичен българин, сиреч можеш да носиш много.
=*=
След 15 стр. стигам до това, което искам да те питам. Твоето решение ми харесва и с това, че следва един от основните принципи в компютрите. Може да не съм програмист, но го знам. И той е, че проблема трябва да се разбие на малки и лесно решими проблеми.
Затова харесвам двустъпковто ти решение. То е просто или поне докато не съм навлязъл в него. И то разбива голям проблем на два по-малки.
Първата точка изглежда обещаващо. Тя много прилича на това, което се описва във Википедия като комбинация. Или поне това, което разбрах.
Нека те цитирам отново:
1. Намираш някаква комбинация от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация.
Малко не схващам. Добре да решим, че имам следния интервал от цени:
{0,5; 0,7; 1; 1,2; 2; 3}
(май така се изписваха)
Имам 40 бр. и 100 лв. сума. Как намирам това?
Ако правилно съм разбрал Википедия, мога да намеря, колко пъти се намират 40 бр. във 100 лв. Мога да намеря възможни сборове от 0,5; 07; 1 и т. н. даващи 100. Но не мога да намеря и двете.
Къде греша???