Вы можете использовать этот алгоритм:
- начать с корня и массива [1 ... m] в качестве массива параметров.
- для каждой опции: выберите один и назначьтеroot
- вызовите рекурсивный вызов после удаления этой опции для всех дочерних элементов
Возможно, этот псевдокод объяснит это лучше:
function assign(root, options) {
for each options as option:
assign root with option
newOptions = options - option // remove newly assign value
for each root->childs as child:
call assign(child, newOptions) //recursive call after removing current option
}
options = [1...m]
assign(root, options)
Это сложнее, чемметод грубой силы
Надеюсь, что поможет!