void print_optimal_parens(int s[N][N], size_t i, size_t j) { if (i == j) std::cout << "A" << i; else { std::cout << "("; print_optimal_parens(s, i, s[i][j]); print_optimal_parens(s, s[i][j]+1, j); std::cout << ")"; } }
/* * * PRINT-OPTIMAL-PARENS(s, i, j) * if (i=j) * then print "A"i * else print "(" * PRINT-OPTIMAL-PARENS(s, i, s[i,j]) * PRINT-OPTIMAL-PARENS(s, s[i,j]+1, j) * print ")" */ void print_optimal_parens(int i, int j) { if (i == j) printf("A%d",i); else { printf("("); print_optimal_parens(i, s[i][j]); print_optimal_parens(s[i][j]+1, j); printf(")"); } }
int main() { matrix_chain_order(); print_optimal_parens(1, NUM-1); printf("\n"); return 0; }