예제 #1
0
        private void BackTrack(PfadKandidat kandidat)
        {
            if (this.Reject(kandidat))
            {
                return;
            }

            if (this.Accept(kandidat))
            {
                this.akzeptiertePfadKandidaten.Add(kandidat);
                return;
            }

            Haltestelle zielhaltestelle;
            if (kandidat.StreckenCount == 0)
            {
                zielhaltestelle = kandidat.Starthaltestelle;
            }
            else
            {
                var zielhaltestellenname = kandidat.Zielhaltestellenname;
                zielhaltestelle = this.FindHaltestelle(zielhaltestellenname);
            }

            foreach (var strecke in zielhaltestelle.Strecken)
            {
                var nextKandidat = kandidat.Clone();
                nextKandidat.AddStrecke(strecke);
                this.kandidaten.Add(nextKandidat);
            }
        }