public BackTracking(int Line, int rresht, BackTracking prind) { line = Line; Rresht = rresht; Prindi = prind; NumriNyjeve++; }
private static void PrintojZgjidhjet(BackTracking Nyja) { NumriZgjidhjeve++; string Zgjidhja = ""; while (Nyja.Rresht >= 0) { TeGjithaZgjidhjet += (((char)('a' + Nyja.Rresht)).ToString()); Zgjidhja += ((char)('a' + Nyja.Rresht)).ToString(); Nyja = Nyja.Prindi; } Zgjidhjet.Add(Zgjidhja); TeGjithaZgjidhjet += Environment.NewLine; }
public void EcniNeperPeme() { if (line == NumriMbretereshave) // linja e fundit (= NumriMbretereshave) arrihet: zgjidhja { PrintojZgjidhjet(this); // shtyp zgjidhjet return; } for (var r = 0; r < NumriMbretereshave; r++) // provoi te gjithe rreshtat ne linjen e ardhshem { NumriTentimeve++; MbretereshaMbi = this; while (MbretereshaMbi.Rresht >= 0 && r != MbretereshaMbi.Rresht && // kercenimi vertikal? r - MbretereshaMbi.Rresht != line + 1 - MbretereshaMbi.line && // kercenimi diagonal majtas? MbretereshaMbi.Rresht - r != line + 1 - MbretereshaMbi.line) // kercenimi diagonal djathtas? { MbretereshaMbi = MbretereshaMbi.Prindi; // Përsëris kontrollimin për të gjitha mbretëreshat në linjat e mëparshme } if (MbretereshaMbi.line == 0) // asnje kercenim nuk u gjet { new BackTracking(line + 1, r, this).EcniNeperPeme(); // vendose mbretereshen ne vijen tjeter } } }