parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Задачка )

Maxx 27.07.2012 19:17

Попалась мне тут задачка интересная, помогите с реализацией? Дано:

Есть вот такая табличка (результат SQL запроса)
article	cnt_need_min	cnt_need_max
article1	6	9
article2	5	11
article3	3	6
article4	2	7
article5	2	5
article6	2	5
Как видно - это перечень товаров. Во второй и третьей колонке - количество этих товаров которое надо купить. Но не просто купить, а сформировать заказ распиханный по коробкам из 10 штук. Причем, когда все товары с ненулевым уровнем min уже распихали, то надо взяться за уровень max, пока все не распихаются. При этом надо учесть переход (т.е. когда в последней коробку уложилось последние допустим 5 товаров, ее надо доукомплектовать 5-ю теми у которых max выше всех). Порядок комплектования важен - первыми комплектуются те, у кого min и max самые большие.

В итоге должны получится вот такие структурки (таблицы, хэши, неважно)
article1	6
article2	4

article2	1
article3	3
article4	2
article5	2
article6	2
и т.д.

Есть какие нибудь мысли по алгоритму решения и какие структуры использовать? Если бы таблицы можно было перезаписывать - то это было бы проще всего сделать циклом с декрементацией счетчиков, но увы. Преобразование в хэш, имхо, не удобно, но могу ошибаться.

Спасибо заранее