Я изучил умножение цепочки матриц, в которой при заданной последовательности матриц цель состоит в том, чтобы найти наиболее эффективный способ умножения матриц.Проблема на самом деле не в том, чтобы выполнить умножения, а просто в том, чтобы решить последовательность задействованных умножений матриц.
Так скажем, к примеру.Учитывая 2 матрицы A и B, у меня может быть одна возможная комбинация матриц, которая равна (AB)
, и когда мои матрицы 3: A, B, C,
, я могу иметь две возможные комбинации: (AB)C
и A (BC)
.Я хочу реализовать код, учитывая количество матриц, выведет все возможные комбинации матриц в Python.
Приведенный ниже код неверен, поскольку при n = 3 матрицах он выводит 5 комбинаций, тогда как на самом деле это должно быть только 2.Приведенный ниже код распечатывает все комбинации сбалансированных скобок.
def printParenthesis(str, n):
if(n > 0):
_printParenthesis(str, 0,
n, 0, 0,0);
return;
def _printParenthesis(str, pos, n,
open, close, count):
if(close == n):
for i in str:
print(i, end = "");
print();
return;
else:
if(open > close):
str[pos] = '}';
_printParenthesis(str, pos + 1, n,
open, close + 1, count);
if(open < n):
str[pos] = '{' + chr(65+count);
_printParenthesis(str, pos + 1, n,
open + 1, close, count+1);
# Driver Code
n = 3; //Number of matrices
str = [""] * 2 * n;
printParenthesis(str, n);
Как мне изменить приведенный выше код в соответствии с моей проблемой?Пожалуйста, помогите.