I think that the best is to start from your list of words. Let's assume for a moment (to simplify the problem) that each letter can come only once both in the list and in each of the words. Check each word, if it has at least one letter not in your list of letters,remove it from the list. At the end, the words still in the list can all be built with with your list of letters. You don't need to test letter combinations, but just to examine each word once. Having sorted your words and your list makes it fast and easy to check whether the letters of words are all in the list of letters.
With some letters being there more than once, it is slightly more complicated, but not so much. You only need to check for each word if you have the right amount of each letter in the list.
This can be extremely fast.
EDIT: I had not seen Rolf's post when I posted mine, but it is essentially the same idea.
|