2. S e dau 3 tije simbolizate prin a , b , c . Pe tija a se găsesc discuri de diametre diferite, aşezate în ordinea des crescătoare a diametrelor privite de jos în sus. Se cere să se mute discurile de pe tija a pe tija b , utilizând ca tijă intermediară tija c , respectând următoarele reguli: - la fiecare pas se mută un singur disc; - nu este permis să se aşeze un disc cu diametrul mai mare peste un disc cu diametrul mai mic. a b c a b a b
3. Exemplul 1 : Pentru n= 1 - avem un disc c b a a b
4. Exemplul 2 : Pentru n=2 – avem do uă discuri a b c a c a b c b
5. Exemplul 3 : a b c Pentru n=3 - avem trei discuri a c b c a b a b c a c b a b
6. Algoritmul de rezolvare : Pasul 1: - mutarea a n-1 discuri de pe tija a pe tija c , utilizând ca tijă intermediară tija b ; Pasul 2: - mutarea discului rămas pe tija b ; Pasul 3: - mutarea a n-1 discuri de pe tija c pe tija b , utilizând ca tijă intermediară tija a .
7. Implementarea algoritmului: - n – numărul de discuri; Exemplul : dacă se citeşte pentru n=3 atunci avem 3 discuri.
8. Programul: Program turnuri; Var a, b, c: char; n: integer ; Procedure Hanoi (n:integer; a, b, c:char ) ; Begin if n=1 then writeln (a, b) else begin Hanoi (n-1, a, c, b); writeln (a, b); Hanoi (n-1, c ,b, a); end; End; Begin repeat write ( ‘n=‘); readln ( n); until n>0; Hanoi( n, ‘a’, ‘b’, ‘c’ ); Readln; End.