2017-10-28 4 views
-1

주문 관리를 위해 신청하고 있습니다. 하나의 주문에는 여러 제품이 포함되어 있고 각 제품은 창고에 있습니다. 이제 배송 비용을 기반으로 패키지에 넣기 위해 주문 수량을 분할하는 최상의 조합을 찾아야합니다.C# 주문 수량 수량 창고마다

예를 들어 두 개의 창고 W1, W2가 있습니다. 고객은 수량 9 인 두 개의 제품 P1과 수량 1의 제품 P2를 주문합니다. 상황은 제품 P2가 창고 W1에만 존재하고 제품 P1은 두 창고에 모두 존재합니다. 이제 가장 저렴한 비용을 찾기 위해이 주문을 두 개의 패키지로 나눌 수있는 모든 가능한 조합을 찾고 싶습니다. 수량이 5 개 이하인 창고 (패키지 한도는 5 개)는 고정 요금 ($ 5)으로, 수량이 5보다 큰 모든 것은 고정 요금 + 추가 비용이 부과됩니다. W1의 추가 비용은 $ 1이고 W2의 추가 비용은 $ 2입니다. Product W1 W2 P1 9 P2 1 N/A

Product W1 W2 P1 9 P2 1 N/A

Product W1 W2 P1 8 1 P2 1 N/A

Product W1 W2 P1 7 2 P2 1 N/A . . .

Product W1 W2 P1 1 8 P2 1 N/A

나는 종이에 같은 목록과 계산 비용과 I가 찾은 최고의 조합을 만들 수 있어요 정액 요금 W1 파 1 송금 ckage $ 5와 W2는 다른 패키지 $ 5를 보내므로 총 비용은 $ 10입니다. 패키지의 수량이 5를 초과하지 않기 때문에 추가 비용이 들지 않습니다. 지금까지웨어 하우스가 포함 된 사전을 각 주문의 키 및 목록으로 작성했습니다 가용성에 따라 다르지만이 조합을 진행할 수없고 도움이 필요합니다. linq이 도울 수있는 것이 있습니까?

Product W1 W2 P1 4 5 P2 1 N/A

답변

0

그것은 매우 간단합니다, 당신은 모든 순열을 통해 통과 할 필요가 없습니다. 나는 LINQ도 사용하지 않을 것이다. 그냥 간단하게, 같은 알고리즘으로 주문 플래너 서비스를 쓰기 : 주문 횟수가 5보다 작거나 같은 경우, 모든 제품에 대한

  • 을, 첫째, W2에서 모두 사용하려고 . W2 용량이 충분하지 않은 경우 W2에서 가능한 한 많이 사용하고 W1의 나머지 수를 사용하십시오.
  • 주문 수량이 5보다 큰 경우 먼저 W2에서 5 개를 사용해보십시오. W2 용량이 충분하지 않은 경우 W2에서 가능한 한 많이 사용하고 W1의 나머지 전체 개수를 사용하십시오.

이 알고리즘을 예제에 적용하면 예상 결과가 바로 나타납니다.

+0

정보 주셔서 감사합니다, 그것을 구현하려고합니다. – Pramod

+0

도움이된다면 답을 수락으로 표시하십시오. 구현에 대한 다른 질문이 있으면 요청할 수도 있습니다. – balayoglu