같은 솔루션은 그래서 당신이 실제로 그런 기본적으로 조회 테이블을 사용하여 수동으로 (25)의 순서에 따라 항목에 대한 중단 점을 모두 결정해야 할 것 얻을 수 있습니다 type 시나리오를 사용하여 25 미만의 수량을 주문해야하는지 결정합니다. 이전에 지적했듯이 이는 배낭 문제와 매우 유사합니다.
기본적으로 코드는 다음과 유사합니다.
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
당신은 어떤 종류의 욕심 많은 알고리즘을 사용하여 즉시 판단 할 수 있습니다. 가격이 많이 바뀔 것으로 예상되면 이상적입니다.
정확히 일치하는 패키지 크기를 채우고 남아있는 수량보다 조금 더 가까운 가장 가까운 일치를 결정하고 더 싼지 확인할 수 있습니다.
그래서 예를 들면
:
//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;
}
이 코드가 완료 근처에 어디 없지만 당신에게 아이디어를 줄 것이다. 코드도 아마도 가장 위대한 것은 아닙니다.
편집
코드의 두 번째 덩어리는 당신이 더 많은 상품을 주문할 수 있습니다 경우 판매자는 당신에게 낮은 가격을 줄 것이다 확신 조회
의 장소에서 첫 번째 체크 후 갈 것입니다. 그냥 코딩하는 대신 그와 이야기하십시오 ;-) –
나에게 협상 할 의향이 있습니까? ;) – Jayoaichen