So sind Sie tatsächlich manuell haben, gehen alle von den einzelnen Stützpunkten für Elemente unter einer Größenordnung von 25 ermitteln dann im Grunde eine Lookup-Tabelle verwenden Geben Sie das Szenario ein, um zu bestimmen, was für Mengen unter 25 zu bestellen ist. Wie bereits erwähnt, ist dies dem Knapsack-Problem sehr ähnlich.
Grundsätzlich würde Ihr Code etwa so aussehen;
int qtyOrder;
int qtyRemain;
int qty25pack;
int qty10pack;
int qty5pack;
int qty1pack;
//Grab as many 25 packs as possible
qty25pack = (qtyOrder % 25);
qtyRemain -= qty25Pack * 25;
//Here use your lookup table to determine what to order
// for the qty's that are less than 25
Sie könnten eine Art gierigen Algorithmus verwenden, um es im laufenden Betrieb zu bestimmen. Was wäre ideal, wenn sich die Preise voraussichtlich stark ändern werden.
Das könnte so aussehen, als würde man die Paketgröße mit einer genauen Übereinstimmung füllen und dann die engste Übereinstimmung ermitteln, die gerade über der verbleibenden Menge liegt, und sehen, ob sie billiger ist.
So zum Beispiel:
//find the perfect product amount price
While (qtyRemain != 0) {
perfectPrice += (qtyRemain % nextSmallestSize) * nextSmallestPackagePrice;
qtyRemain -= (qtyReamin % nextSmallestSize)
}
//Find the closest match over price
While ((qtyRemain % nextSmallestSize) != 0){
closePrice += (qtyRemain % nextSmallestSize) * nextSmallestPackagePrice;
qtyRemain -= (qtyRemain % nextSmallestSize)
}
//add the last price before we reached the perfect price size
closePrice += nextSmallestPackagePrice;
//determine lowest price
if closePrice < perfectPrice {
cost = closePrice;
}
else {
cost = PerfectPrice;
}
Dieser Code ist nicht annähernd vollständig, aber sollte Ihnen eine Idee geben. Der Code ist wahrscheinlich auch nicht der beste.
bearbeiten
Der zweite Teil des Codes nach dem ersten Chunk anstelle des Lookup gehen würde
Ich bin sicher, dass der Verkäufer gibt Ihnen den niedrigeren Preis, wenn Sie mehr Einzelteile bestellen. Sprich einfach mit ihm anstatt zu programmieren ;-) –
Willst du mit mir verhandeln? ;) – Jayoaichen