Распределение шаров по «ящикам с заданной емкостью» с помощью динамического программирования

Мне было интересно, как решить такую ​​задачу с помощью DP.

Дано n шаров и m ящиков, каждая ячейка имеет макс. вместимость c1, c2, ... см. Каково общее количество способов распределения этих n шаров по этим m ячейкам.

Проблема, с которой я сталкиваюсь, это

  1. Как найти рекуррентное соотношение (я мог бы, когда все емкости были одной константой c).
  2. Будет несколько тестовых примеров, каждый из которых будет иметь свой набор c1, c2 .... cm. Итак, как на самом деле DP будет применяться для всех этих тестовых случаев, потому что ответ явно зависит от текущего c1, c2 .... cm, и я не могу сохранить (или предварительно вычислить) ответ для всех комбинаций c1, c2. ...см.

Кроме того, я не смог придумать никакой прямой комбинаторной формулы для этой проблемы, и я не думаю, что она существует.

7
задан Andrew 5 October 2011 в 14:05
поделиться