예제 #1
0
            private void FindSolutionsRecursive(ArrayList result, int level, ISolutionEnumerator enumerator)
            {
                ISolution solution = GetSolution(level);

                Debug.Assert(solution != enumerator.StartingPartialSolution);

                while (enumerator.FillDescendantSolution(solution))
                {
                    //Console.Write(solution.ToString());
                    //Console.ReadLine();

                    if (solution.IsComplete)
                    {
                        //Console.Write(solution.ToString());
                        //Console.ReadLine();
                        result.Add(solution.Clone());
                    }
                    else
                    {
                        ISolutionEnumerator descendantEnumerator = GetSolutionEnumerator(level + 1);
                        solution.FillDescendantSolutionEnumerator(descendantEnumerator);
                        descendantEnumerator.StartingPartialSolution = solution;

                        FindSolutionsRecursive(result, level + 1, descendantEnumerator);
                    }
                }
            }