I'm working on an Anagram Finder program. One of the methods I'm writing introduces the concept of recursive backtracking which I'm completely new to. I'm hoping to get some suggestions of how this works/how to make it work.
I'm trying to implement recursive backtracking in order to display a list of words from a dictionary text file to form anagrams for an input phrase. Here's what I have so far:
public void printAnagrams(String phrase, int max, List<List<String>> anagrams) {
if (anagrams == null) {
throw new IllegalArgumentException();
} else if (max != 0) {
System.out.println("...");
} else
System.out.println("...");
for (List<String> element : anagrams)
System.out.println(anagrams);
}// End of printAnagram method
If max > 0, only combination of max words or less are displayed.
Since the program is pretty long, the background info is listed in the links below.
AnagramFinder class: Click Here
Client class: Click Here
This is the expected results:
File name? dict2.txt
Phrase to Scramble? off course
All words found in "off course":
[core, course, cs, cure, for, force, forces, four, of, off, offer, offers, or, our, ours, re, score, so, source, suffer, sure, us, use, user]
Max words to include (Enter for no max)? 3
[core, off, us]
[core, us, off]
[course, off]
[cure, off, so]
[cure, so, off]
[force, of, us]
[force, us, of]
[of, force, us]
[of, us, force]
[off, core, us]
[off, course]
[off, cure, so]
[off, so, cure]
[off, source]
[off, us, core]
[so, cure, off]
[so, off, cure]
[source, off]
[us, core, off]
[us, force, of]
[us, of, force]
[us, off, core]