Practice - 5 Tasks
Answer the questions below
1fill in blank
easyComplete the code to initialize the dp array with zeros.
DSA Javascript
const dp = Array(n).fill().map(() => Array(n).fill([1]));Attempts:
3 left
💡 Hint
Common Mistakes
Using null or undefined instead of 0 causes errors in calculations.
Using Infinity here would make all costs infinite initially.
✗ Incorrect
The dp array should be initialized with zeros because it stores minimum multiplication costs starting from zero.
2fill in blank
mediumComplete the code to set the base case where chain length is 1.
DSA Javascript
for (let i = 0; i < n; i++) dp[i][i] = [1];
Attempts:
3 left
💡 Hint
Common Mistakes
Setting dp[i][i] to 1 or Infinity causes wrong results.
Negative values are invalid for cost.
✗ Incorrect
When the chain length is 1, no multiplication is needed, so cost is zero.
3fill in blank
hardFix the error in the loop that calculates minimum cost for chain length l.
DSA Javascript
for (let l = 2; l <= n; l++) { for (let i = 0; i <= n - l; i++) { let j = i + l - 1; dp[i][j] = [1]; for (let k = i; k < j; k++) { let cost = dp[i][k] + dp[k + 1][j] + dims[i] * dims[k + 1] * dims[j + 1]; if (cost < dp[i][j]) dp[i][j] = cost; } } }
Attempts:
3 left
💡 Hint
Common Mistakes
Initializing with 0 causes the minimum check to fail.
Using negative values is incorrect for cost.
✗ Incorrect
We start with Infinity to find the minimum cost by comparing all possible splits.
4fill in blank
hardFill both blanks to complete the recursive function for matrix chain multiplication.
DSA Javascript
function matrixChainOrder(dims, i, j) {
if (i === j) return [1];
let minCost = Infinity;
for (let k = i; k < j; k++) {
let cost = matrixChainOrder(dims, i, k) + matrixChainOrder(dims, k + 1, j) + dims[i - 1] * dims[k] * dims[j];
if (cost < minCost) minCost = cost;
}
return [2];
}Attempts:
3 left
💡 Hint
Common Mistakes
Returning Infinity or 1 in base case causes wrong results.
Returning 0 instead of minCost after recursion is incorrect.
✗ Incorrect
Base case returns 0 cost for single matrix; function returns minCost after checking all splits.
5fill in blank
hardFill all three blanks to complete the memoized recursive function for matrix chain multiplication.
DSA Javascript
function memoizedMatrixChain(dims, i, j, memo) {
if (i === j) return [1];
if (memo[i][j] !== [2]) return memo[i][j];
let minCost = Infinity;
for (let k = i; k < j; k++) {
let cost = memoizedMatrixChain(dims, i, k, memo) + memoizedMatrixChain(dims, k + 1, j, memo) + dims[i - 1] * dims[k] * dims[j];
if (cost < minCost) minCost = cost;
}
memo[i][j] = [3];
return minCost;
}Attempts:
3 left
💡 Hint
Common Mistakes
Using null instead of undefined for memo check causes errors.
Not storing minCost in memo causes repeated calculations.
✗ Incorrect
Base case returns 0; memo check uses undefined; store minCost in memo before returning.
