Given an expression which contains numbers and two operators ‘+’ and ‘*’, we need to find maximum and minimum value which can be obtained by evaluating this expression by different parenthesization.
Input : expr = “1+2*3+4*5” Output : Minimum Value = 27, Maximum Value = 105 Explanation: Minimum evaluated value = 1 + (2*3) + (4*5) = 27 Maximum evaluated value = (1 + 2)*(3 + 4)*5 = 105
We can solve this problem by dynamic programming method, we can see that this problem is similar to matrix chain multiplication, here we are trying different parenthesization to maximize and minimize expression value instead of number of matrix multiplication.
In below code first we have separated the operators and numbers from given expression then two 2D arrays are taken for storing the intermediate result which are updated similar to matrix chain multiplication and different parenthesization are tried among the numbers but according to operators occurring in between them. At the end last cell of first row will store the final result in both the 2D arrays.
Minimum value : 27, Maximum value : 105
This article is contributed by Utkarsh Trivedi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Maximum and Minimum Values of an Algebraic Expression
- Minimum cells required to reach destination with jumps equal to cell values
- Minimum number of coins that can generate all the values in the given range
- std::regex_match, std::regex_replace() | Regex (Regular Expression) In C++
- Evaluate a boolean expression represented as string
- Maximum count of values of S modulo M lying in a range [L, R] after performing given operations on the array
- Maximum sum subsequence with values differing by at least 2
- Rearrange Odd and Even values in Alternate Fashion in Ascending Order
- Largest subsequence such that all indices and all values are multiples individually
- Maximize occurrences of values between L and R on sequential addition of Array elements with modulo H
- Count of arrays having consecutive element with different values
- Average of ASCII values of characters of a given string
- Probability of getting all possible values on throwing N dices
- Split a given array into K subarrays minimizing the difference between their maximum and minimum
- Query to find the maximum and minimum weight between two nodes in the given tree using LCA.
- Flip minimum signs of array elements to get minimum sum of positive elements possible
- Minimum number greater than the maximum of array which cannot be formed using the numbers in the array
- Minimum cost to reach end of array array when a maximum jump of K index is allowed
- Split array into minimum number of subsets having maximum pair sum at most K
- Minimum Cost Path with Left, Right, Bottom and Up moves allowed