Q: Can I use recursion on this assignment?
A: No. Do not use recursion (functions that call themselves).
Q: How do I construct a compound collection? It doesn't compile.
A: You need a space between nested <>.
Vector<Vector<int>> foo;    // no
Vector<Vector<int> > foo;   // yes
Q: Am I allowed to use a Lexicon?
A: Yes, though you are not required to do so.
Q: How can I loop over all of the letters in the alphabet?
A:
for (char ch = 'a'; ch <= 'z'; ch++) { ... }
Q: Why is my program veeeeeeery slow?
A: Usually this happens for one of two reasons: Either you have chosen the wrong data structure somewhere, or you have not properly followed the pseudocode algorithm we have you. A common bug is that students will loop over the entire dictionary to look for words. You should not need to do that. The purpose of the dictionary is to look up words, to test whether something is a valid word or not; not to loop over. If you want to loop over all possible "neighbor" words that are one letter away from a given word, do this by looping over the indexes of the string and over the letters a-z, as described in the pseudocode; not by looping over the dictionary.
Q: How many seconds is my program allowed to take? Mine finds the ladder in ___ seconds. Is that fast enough?
A: There is no specific time limit we test you on. But you should choose good collections and write your algorithm efficiently. If you do not, you may lose points. You could try running our demo solution to see how long that takes on your machine to get some idea of an appropriate runtime, though yours might not match this exactly.
Q: Why does my program spit out a VERY long (20-30+ word) ladder even for simple cases?
A: Maybe you're accidentally adding words to an existing collection rather than making a copy of it and adding to the copy. Run with a very small input, then print out your collections along the way and make sure everything is what you expect.
Q: If the word ladder is invalid for multiple reasons, which error message should I print?
A: It is up to you.
Q: I already know a lot of C/C++ from my previous programming experience. Can I use advanced features, such as pointers, on this assignment?
A: No; you should limit yourself to using the material that was taught in class so far.
Q: Can I add any other files to the program? Can I add some classes to the program?
A: No; you should limit yourself to the files and functions in the spec.