What is the main idea behind the greedy algorithm approach?
Greedy algorithms make the best choice at each step, hoping to find the overall best solution by building it piece by piece.
Click to reveal answer
intermediate
Why does a greedy algorithm work for some problems but fail for others?
It works when local optimal choices lead to a global optimum. It fails when local choices don't guarantee the best overall solution.
Click to reveal answer
intermediate
What is the 'greedy choice property'?
It means that a global optimal solution can be arrived at by making a locally optimal choice at each step.
Click to reveal answer
intermediate
Give an example of a problem where greedy algorithms fail.
The coin change problem with arbitrary coin denominations can fail with greedy algorithms because the local best choice may not lead to the fewest coins overall.
Click to reveal answer
intermediate
What is the 'optimal substructure' property in greedy algorithms?
It means the optimal solution to a problem contains optimal solutions to its subproblems, allowing greedy steps to build the final solution.
Click to reveal answer
Which property must a problem have for a greedy algorithm to guarantee an optimal solution?
AGreedy choice property
BRandom choice property
CBacktracking property
DDivide and conquer property
✗ Incorrect
The greedy choice property ensures that local optimal choices lead to a global optimum.
Why might a greedy algorithm fail on the coin change problem with coins {1, 3, 4} for amount 6?
ABecause it always picks the largest coin first, which may not lead to the fewest coins
BBecause it tries all combinations
CBecause it uses recursion
DBecause it sorts coins incorrectly
✗ Incorrect
Greedy picks the largest coin first (4), then 1 and 1, totaling 3 coins, but the optimal is two coins (3 + 3).
What does 'optimal substructure' mean in the context of greedy algorithms?
AThe problem requires backtracking
BThe problem can be divided into independent subproblems
CThe optimal solution contains optimal solutions to subproblems
DThe problem has no solution
✗ Incorrect
Optimal substructure means the best solution includes best solutions to smaller parts.
Which of these problems is typically solved correctly by a greedy algorithm?
AFinding the shortest path in a graph with negative edges
BTraveling salesman problem
CCoin change with arbitrary denominations
DActivity selection problem (choosing max non-overlapping intervals)
✗ Incorrect
Activity selection problem has greedy choice and optimal substructure properties.
What is a sign that a greedy algorithm might fail for a problem?
AThe problem has overlapping subproblems
BLocal optimal choices do not lead to global optimum
CThe problem is very large
DThe problem is sorted
✗ Incorrect
If local choices don't guarantee the best overall solution, greedy fails.
Explain why greedy algorithms work for some problems and fail for others. Include the concepts of greedy choice property and optimal substructure.
Think about how making the best choice step-by-step can lead to the best overall solution or not.
You got /4 concepts.
Describe a real-life example where a greedy approach works well and one where it might fail. Explain why in both cases.
Consider simple tasks like choosing coins or scheduling activities.
You got /3 concepts.
Practice
(1/5)
1. What is the main reason a greedy algorithm works correctly for some problems?
easy
A. Because it sorts the input data before processing
B. Because it tries all possible solutions and picks the best
C. Because it makes the best choice at each step hoping for a global optimum
D. Because it uses recursion to explore all paths
Solution
Step 1: Understand greedy choice property
A greedy algorithm picks the best local option at each step without reconsidering previous choices.
Step 2: Connect local choices to global optimum
For some problems, these local best choices lead to the overall best solution, which is why greedy works.
Final Answer:
Because it makes the best choice at each step hoping for a global optimum -> Option C
Quick Check:
Greedy = best local choice each step [OK]
Hint: Greedy picks best now, hoping for best overall [OK]
Common Mistakes:
Thinking greedy tries all solutions
Confusing greedy with backtracking
Assuming sorting always means greedy
2. Which of the following is the correct syntax to start a greedy algorithm loop in C# to process a sorted array named arr?
easy
A. foreach (int i in arr.Length)
B. for (int i = 0; i < arr.Length; i++)
C. while (i <= arr.Length)
D. for (int i = 1; i <= arr.Length; i++)
Solution
Step 1: Identify correct for loop syntax in C#
The standard for loop iterates from 0 to less than array length using i < arr.Length.
Step 2: Check each option for syntax correctness
for (int i = 0; i < arr.Length; i++) uses correct syntax; B uses foreach incorrectly; C uses while with undefined i; D uses 1-based index which is off by one.
Final Answer:
for (int i = 0; i < arr.Length; i++) -> Option B
Quick Check:
for loop with i from 0 to length-1 [OK]
Hint: Use for loop from 0 to less than length [OK]
Common Mistakes:
Using foreach with arr.Length instead of arr
Starting loop at 1 instead of 0
Using while without initializing i
3. Consider the following C# code that tries to select the maximum number of non-overlapping intervals using a greedy approach:
var intervals = new List<(int start, int end)> { (1,3), (2,5), (4,7), (6,9) };
intervals.Sort((a,b) => a.end.CompareTo(b.end));
var count = 0;
int lastEnd = int.MinValue;
foreach (var interval in intervals) {
if (interval.start >= lastEnd) {
count++;
lastEnd = interval.end;
}
}
Console.WriteLine(count);
What is the output of this code?
medium
A. 2
B. 1
C. 4
D. 3
Solution
Step 1: Sort intervals by end time
Sorted intervals: (1,3), (2,5), (4,7), (6,9)
Step 2: Select intervals greedily
Pick (1,3) first (count=1, lastEnd=3). Next (2,5) starts before 3, skip. Next (4,7) starts after 3, pick (count=2, lastEnd=7). Next (6,9) starts after 7, pick (count=3, lastEnd=9).
Final Answer:
3 -> Option D
Quick Check:
Greedy interval selection count = 3 [OK]
Hint: Sort by end, pick intervals starting after last end [OK]
Common Mistakes:
Counting overlapping intervals
Not sorting by end time
Updating lastEnd incorrectly
4. The following C# code tries to solve the coin change problem using a greedy approach but sometimes fails. What is the bug?
int[] coins = {1, 3, 4};
int amount = 6;
int count = 0;
for (int i = coins.Length - 1; i >= 0; i--) {
while (amount >= coins[i]) {
amount -= coins[i];
count++;
}
}
Console.WriteLine(count);
medium
A. Greedy fails because coin denominations are not standard, so it misses optimal solution
B. The loop should start from 0, not from coins.Length - 1
C. The while condition should be amount > coins[i], not >=
D. The count variable is not initialized to zero
Solution
Step 1: Understand greedy coin change approach
Greedy picks largest coin first repeatedly until amount is less, then smaller coins.
Step 2: Check coin denominations and optimality
With coins {1,3,4} and amount 6, greedy picks 4 + 1 + 1 = 3 coins, but optimal is 3 + 3 = 2 coins.
Final Answer:
Greedy fails because coin denominations are not standard, so it misses optimal solution -> Option A
Quick Check:
Non-standard coins break greedy optimality [OK]
Hint: Greedy fails if coin set is non-standard [OK]
Common Mistakes:
Thinking loop direction causes failure
Confusing while condition with off-by-one
Ignoring coin denomination impact
5. You want to schedule the maximum number of tasks without overlap. Each task has a start and end time. Which approach guarantees the optimal solution and why?
Options: A) Sort tasks by start time and pick earliest starting tasks B) Sort tasks by duration and pick shortest tasks first C) Sort tasks by end time and pick tasks finishing earliest first D) Pick tasks randomly and check for overlaps
hard
A. Sort tasks by end time and pick tasks finishing earliest first
B. Sort tasks by duration and pick shortest tasks first
C. Sort tasks by start time and pick earliest starting tasks
D. Pick tasks randomly and check for overlaps
Solution
Step 1: Understand the interval scheduling problem
The goal is to select maximum non-overlapping tasks.
Step 2: Identify greedy strategy that works
Sorting by end time and picking earliest finishing tasks ensures maximum room for future tasks, proven optimal.
Step 3: Evaluate other options
Sorting by start time or duration can lead to suboptimal selections; random picks are unreliable.
Final Answer:
Sort tasks by end time and pick tasks finishing earliest first -> Option A
Quick Check:
Earliest finish time greedy = optimal schedule [OK]
Hint: Pick tasks finishing earliest first for max schedule [OK]
Common Mistakes:
Choosing earliest start time instead of end time
Picking shortest duration tasks ignoring overlaps
Assuming random picks can be optimal
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.