Assign4: Backtracking


Due Friday, May 08 at 11:59 pm


Recursion is a powerful problem-solving tool with tons of practical applications. This assignment centers on three real-world recursion problems, each of which we think is interesting in its own right. By the time you’re done with this assignment, we think you’ll have a much deeper appreciation both for recursive problem solving and for what sorts of areas you can apply your newfound skills to.

Learning goals

Assignment parts

This assignment consists of a short warmup exercise and three recursive problems.

For this assignment, we are requiring that you complete the warmup and at least 2 of the 3 remaining problems. We strongly recommend completing all 3 if you have the time and capacity to do so, as it will make for good practice in solidifying the concepts we have seen in class. However, completion of only 2 of the 3 non-warmup parts is the baseline that we will be using as "full-credit" on this assignment. If you decide to complete all 3 parts, you will be eligible for extra-credit, similar in vein to completing extensions on other assignments.

After you have completed the warmup, you may select any combination of the 3 remaining problems to complete (hmmm, how many different possible ways could you choose to complete this assignment?). We recommend looking over all 3 parts before getting started.

Getting started

We provide a ZIP of the starter project. Download the zip, extract the files, and open the project in Qt creator.

📦 Starter code

The source files you will edit are warmup.cpp, merge.cpp, boggle.cpp, voting.cpp

Additionally, you will answer questions in short_answer.txt.

This assignment is to be completed individually. Working in pairs/groups is not permitted.

Getting help

Here are some resources that you might find helpful while working on the assignment:

Submit

Review our submission checklist before calling it done. Upload your completed files for grading to the Paperless website.

Please submit only the files you edited; for this assignment, these files will be

🏁 Submit to Paperless

Note: When submitting to Paperless, due dates are expressed in PDT.