Turnurile Din Hanoi

8

Click here to load reader

Transcript of Turnurile Din Hanoi

Page 1: Turnurile Din Hanoi

Elev: Miclăuş CristianClasa a XI-a B

Page 2: Turnurile Din Hanoi

Se dau 3 tije simbolizate prin a, b, c. Pe tija a se găsesc discuri de diametre diferite, aşezate în ordinea descrescă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

Page 3: Turnurile Din Hanoi

Exemplul 1:

Pentru n=1 - avem un disc

cba

a b

Page 4: Turnurile Din Hanoi

Exemplul 2:

Pentru n=2 – avem două discuri

a b c

a c

a b

c b

Page 5: Turnurile Din Hanoi

Exemplul 3:

a b c

Pentru n=3 - avem trei discuri

a cb c

a b

a b

c a

c b

a b

Page 6: Turnurile Din Hanoi

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.

Page 7: Turnurile Din Hanoi

Implementarea algoritmului: - n – numărul de discuri;

Exemplul : dacă se citeşte pentru n=3 atunci avem 3 discuri.

Page 8: Turnurile Din Hanoi

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.