private void SomeScheduleWorks(ScheduleList tsl, string[] rlist, int rindex, List<ScheduleList> validSchedules) { int currentClass = Int32.Parse(rlist[rindex]); foreach (ClassSection cs in classList[currentClass].Sections) { if (tsl.DoesClassConflict(cs).Count == 0) { tsl.classes.Add(cs); if (rlist.Length - 1 == rindex) { validSchedules.Add(CopyScheduleList(tsl)); } else { SomeScheduleWorks(tsl, rlist, rindex + 1, validSchedules); } tsl.classes.RemoveAt(tsl.classes.Count - 1); } } }
private bool ScheduleWorks(ScheduleList tsl, string[] rlist, int rindex) { int currentClass = Int32.Parse(rlist[rindex]); foreach (ClassSection cs in classList[currentClass].Sections) { if (tsl.DoesClassConflict(cs).Count == 0) { tsl.classes.Add(cs); if (rlist.Length - 1 == rindex) { return true; } else { if (ScheduleWorks(tsl, rlist, rindex + 1)) { return true; } else { tsl.classes.RemoveAt(tsl.classes.Count - 1); } } } } return false; }