Учитывая коллекцию с подколлекциями M, хороший алгоритм (желательно реализация в Javascript, но любой другой язык или псевдокод также будет интересен), чтобы найти все возможные дистрибутивы из N объектов в подколлекции M?Алгоритм для поиска всех способов распределения N объектов в M-коллекциях
Например, если установка так:
var collection = [[],[],[]];
var items = ['a','b','c']
Я хотел бы, чтобы результаты выглядеть
[['a','b','c'],[],[]]
[['a','b'],['c'],[]]
[['a','c'],['b'],[]]
[['a'],['b','c'],[]]
[['b','c'],['a'],[]]
[['b'],['c','a'],[]]
[['c'],['b','a'],[]]
[['a'],['b'],['c']]
[[],['a','b','c'],[]]
[[],['a'],['b','c']]
// etc
N может быть больше, меньше или равно N. Кроме того, в этом примере я использую символы как элементы для распространения, но я бы хотел, чтобы алгоритм мог распространять объекты любого типа.
алгоритмы не "в" языке. Реализации алгоритма являются, в частности, языком. В любом случае ваш вопрос слишком широк. Не просите всех решить всю вашу работу. Сделайте это самостоятельно и спросите только об определенных деталях, за которые вы застряли. –
Я думаю, что алгоритм, который я разместил ниже, должен предоставить вам то, что вам нужно. Было бы замечательно, если @JK мог бы подтвердить, насколько я прав. –