Bird
Raised Fist0
DSA C++programming~5 mins

Divide and Conquer Strategy and Recurrence Relations in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind the Divide and Conquer strategy?
Divide the problem into smaller subproblems, solve each subproblem independently, and then combine their solutions to solve the original problem.
Click to reveal answer
beginner
Explain what a recurrence relation is in the context of Divide and Conquer algorithms.
A recurrence relation expresses the running time of a Divide and Conquer algorithm in terms of the running time of smaller subproblems plus the time to divide and combine them.
Click to reveal answer
intermediate
Given the recurrence T(n) = 2T(n/2) + n, what is the time complexity using the Master Theorem?
The time complexity is O(n log n). This is because a = 2, b = 2, and f(n) = n, which matches case 2 of the Master Theorem.
Click to reveal answer
beginner
What are the three steps in the Divide and Conquer approach?
1. Divide the problem into smaller subproblems.
2. Conquer each subproblem by solving it recursively.
3. Combine the solutions of subproblems to get the final solution.
Click to reveal answer
intermediate
How does the Master Theorem help in solving recurrence relations?
It provides a direct way to find the time complexity of recurrences of the form T(n) = aT(n/b) + f(n) by comparing f(n) with n^(log_b a) and applying one of three cases.
Click to reveal answer
Which of the following is NOT a step in the Divide and Conquer strategy?
ADivide the problem into subproblems
BSolve subproblems independently
CSolve the problem without dividing
DCombine subproblem solutions
In the recurrence T(n) = 3T(n/3) + n, what is the time complexity?
AO(n log n)
BO(n)
CO(n^2)
DO(log n)
What does the 'conquer' step mean in Divide and Conquer?
ASolving the subproblems recursively
BSplitting the problem
CCombining solutions
DIgnoring subproblems
Which recurrence relation corresponds to the Merge Sort algorithm?
AT(n) = T(n-1) + 1
BT(n) = 2T(n/2) + n
CT(n) = T(n/2) + 1
DT(n) = 3T(n/3) + n^2
If a recurrence is T(n) = 4T(n/2) + n^2, what is the time complexity?
AO(n log n)
BO(n^2)
CO(n^3)
DO(n^2 log n)
Describe the Divide and Conquer strategy and its three main steps.
Think about how you solve a big task by breaking it into smaller tasks.
You got /3 concepts.
    Explain how recurrence relations represent the running time of Divide and Conquer algorithms and how the Master Theorem helps solve them.
    Focus on how the time depends on subproblems and extra work.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main idea behind the Divide and Conquer strategy in algorithms?
      easy
      A. Break the problem into smaller subproblems, solve them independently, then combine results
      B. Solve the problem by trying all possible solutions one by one
      C. Use a single loop to iterate through all elements
      D. Store all intermediate results to avoid repeated calculations

      Solution

      1. Step 1: Understand Divide and Conquer concept

        Divide and conquer splits a problem into smaller parts, solves each part, then merges results.
      2. Step 2: Compare options

        Break the problem into smaller subproblems, solve them independently, then combine results correctly describes this process. Options B, C, and D describe other strategies like brute force or dynamic programming.
      3. Final Answer:

        Break the problem into smaller subproblems, solve them independently, then combine results -> Option A
      4. Quick Check:

        Divide and Conquer = Break, Solve, Combine [OK]
      Hint: Divide and conquer means split, solve, then merge results [OK]
      Common Mistakes:
      • Confusing divide and conquer with brute force
      • Thinking it uses only loops without recursion
      • Mixing it up with dynamic programming
      2. Which of the following is the correct recurrence relation for the Merge Sort algorithm?
      easy
      A. T(n) = 3T(n/3) + O(n^2)
      B. T(n) = T(n-1) + O(1)
      C. T(n) = 2T(n/2) + O(n)
      D. T(n) = T(n/2) + O(log n)

      Solution

      1. Step 1: Recall Merge Sort recurrence

        Merge Sort divides array into two halves, sorts each half (2T(n/2)) and merges in O(n).
      2. Step 2: Match with options

        T(n) = 2T(n/2) + O(n) matches 2T(n/2) + O(n). Others describe different algorithms or complexities.
      3. Final Answer:

        T(n) = 2T(n/2) + O(n) -> Option C
      4. Quick Check:

        Merge Sort recurrence = 2T(n/2) + n [OK]
      Hint: Merge Sort splits in two and merges in linear time [OK]
      Common Mistakes:
      • Using T(n-1) instead of T(n/2)
      • Confusing merge cost with recursive calls
      • Choosing quadratic terms incorrectly
      3. What is the output of the following C++ function call:
      int count = 0;
      int func(int n) {
        if (n <= 1) return 1;
        count++;
        return func(n/2) + func(n/2);
      }
      int main() {
        func(8);
        std::cout << count;
        return 0;
      }
      medium
      A. 15
      B. 7
      C. 8
      D. 6

      Solution

      1. Step 1: Understand recursion calls and count increments

        func(8) calls func(4) twice, each func(4) calls func(2) twice, and so on until n <= 1.
      2. Step 2: Count increments at each call

        Count increments at each non-base call. The recursion tree has 15 non-base calls (all calls except those where n <= 1). Thus, count increments 15 times.
      3. Final Answer:

        15 -> Option A
      4. Quick Check:

        Count increments for each non-base call = 15 [OK]
      Hint: Count increments at each non-base recursive call [OK]
      Common Mistakes:
      • Counting base case calls
      • Not doubling calls for each recursion
      • Miscounting due to integer division
      4. Identify the error in the following recurrence relation and fix it:
      T(n) = 2T(n/2) + n^2 for n > 1
      T(1) = 1
      
      What is the correct time complexity?
      medium
      A. O(n log n)
      B. O(n^2)
      C. O(n^2 log n)
      D. O(n)

      Solution

      1. Step 1: Analyze the recurrence relation

        T(n) = 2T(n/2) + n^2 means dividing problem into two halves and combining in n^2 time.
      2. Step 2: Apply Master Theorem

        Here, a=2, b=2, log_b a = 1, f(n)=n^2 = Ω(n^{1 + ε}) for some ε > 0 (case 3). Thus, time complexity is Θ(n^2) = O(n^2).
      3. Final Answer:

        O(n^2) -> Option B
      4. Quick Check:

        Master Theorem with f(n)=n^2 gives O(n^2) [OK]
      Hint: Use Master Theorem: compare f(n) with n^log_b a [OK]
      Common Mistakes:
      • Assuming O(n log n) without checking f(n)
      • Ignoring the power of n in f(n)
      • Misapplying Master Theorem cases
      5. Given the recurrence relation
      T(n) = 3T(n/3) + n / log n

      Using the Master Theorem, what is the asymptotic time complexity of T(n)?
      hard
      A. O(n)
      B. O(n^{log_3 3})
      C. O(n log n)
      D. O(n log log n)

      Solution

      1. Step 1: Identify parameters for Master Theorem

        a=3, b=3, so n^{log_b a} = n^{log_3 3} = n^1 = n.
      2. Step 2: Compare f(n) = n / log n with n^{log_b a} = n

        f(n) grows slower than n by a factor of log n. This is a case where f(n) = n / log n = n^{1} / log n.
      3. Step 3: Apply Master Theorem case 2 variant

        Since f(n) = n / log n = n^{1} / log n, which is smaller than n^{1} by a log factor, the complexity is O(n log log n).
      4. Final Answer:

        O(n log log n) -> Option D
      5. Quick Check:

        Master Theorem with f(n) = n / log n gives O(n log log n) [OK]
      Hint: Compare f(n) to n^{log_b a} carefully for log factors [OK]
      Common Mistakes:
      • Ignoring the log factor in f(n)
      • Choosing O(n) or O(n log n) incorrectly
      • Miscomputing log base
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard