귀하의 임무는 컨베이어 벨트에서 포장재를 포장재로 포장하여 소매 업체로 발송하도록 최적화 할 수있는 알고리즘 (프로그램 또는 기능)을 구축하여 가장 많은 수의 포장재를 최적화하는 것입니다.
각각의 백은 적어도 특정 양의 중량을 가져야하지만, 그 중량이 다른 백을 채우기 위해 사용될 수 있기 때문에 초과분은 이익을 잃게된다. 포장 기계는 항상 n
대기열에서 과일을 미리 보며 n
처리되는 (단일) 가방에 과일을 추가하도록 선택할 수 있습니다 . n
대기열 의 첫 번째 요소 이상을 볼 수 없습니다 . 프로그램은 항상 가방에 이미 얼마나 많은 무게가 있는지 정확히 알고 있습니다.
이를 시각화하는 또 다른 방법 n
은 끝에 새로운 과일이 닿기 전에 과일을 가져와야 하는 적재 공간이있는 컨베이어 벨트를 갖는 것 입니다. 마지막에 남은 과일과 가득 찬 가방은 버립니다.
입력
- 대기열에있는 과일 무게의 목록 / 배열 (정수)
- 백의 최소 총 중량 (양의 정수)
- Lookahead
n
(양의 정수)
산출
알고리즘은 모든 가방에 과일과 과일의 무게를 반환해야합니다. 컴퓨터에서 1 분 안에 프로그램을 실행하고 점수를 계산할 수 있어야합니다.
예
Total weight 1000, lookahead of 3 and fruit queue:
[171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185]
One possible output (indented to show how the lookahead affects the bagging):
[171,163,172, 156,175, 176]
[162, 155,182,189, 161,160]
[152,162,174,172,191,185]
채점
귀하의 알고리즘은 내가 준비한 10000 개의 오렌지 배치 에서 6 번 실행 되며 양쪽 끝을 포함하여 2 ~ 7 범위의 미리보기에서 테스트 됩니다. 최소 1000 단위의 가방에 포장해야합니다. 오렌지는 일반적으로 평균 무게가 170이고 표준 편차가 13이면 분포됩니다.
당신의 점수는 6 번 달리기에서 나온 가방의 합계입니다. 가장 높은 점수가 이깁니다. 표준 허점은 허용되지 않습니다.