Мне нужна помощь в отношении перестановок.
Моя проблема заключается в следующем: в нашей системе есть различные устройства, на которых работают различные программные компоненты.Я заинтересован в нахождении всех перестановок (уникальных комбинаций) версий указанных компонентов, и в итоге получаю список кортежей или структур аля это
struct Permutation
{
IComparable Software1{ get; set; }
IComparable Software2{ get; set; }
IComparable Software3{ get; set; }
}
Затем получим список, подобный этому:
Software1: v1
Software2: v1
Software3: v1
Software1: v1
Software2: v2
Software3: v1
Software1: v2
Software2: v1
Software3: v1
Программное обеспечение существует на различных компонентах, организованных в виде древовидной структуры (Узел-> Элемент).Тип дочернего узла говорит мне, какое программное обеспечение искать
Node->Root (L0)
Node->Parent (L1)
Node->ChildType1 (L2): has property Software1, Software2
Node->ChildType2 (L2): has property Software3
Я могу легко перемещаться по дереву с помощью node.Children
(IList<Node>
) и node.Parent
(Node
).
Я хочу перебрать итерацию дерева и составить список всех перестановок.Есть ли хорошая структура данных в .net Framework, которую я могу использовать для этого, или у кого-нибудь есть предложения по ее решению?