You are on page 1of 7

Se dau 3 tije simbolizate prin a, b, c.

Pe tija a se gsesc discuri

de diametre diferite, aezate n ordinea descresctoare a diametrelor privite de jos n sus. Se cere s se mute discurile de pe tija a pe tija b, utiliznd ca tij intermediar tija c, respectnd urmtoarele reguli: - la fiecare pas se mut un singur disc; - nu este permis s se aeze un disc cu diametrul mai mare peste un disc cu diametrul mai mic. a b

Exemplul 1:

Pentru n=1 - avem un disc a b

Exemplul 2:

Pentru n=2 avem dou discuri


a c

a c

b b

Exemplul 3:

Pentru n=3 - avem trei discuri

a a b

b c c

a
c c

b
a b b

Algoritmul de rezolvare: Pasul 1: - mutarea a n-1 discuri de pe tija a pe tija c, utiliznd ca tij intermediar tija b; Pasul 2: - mutarea discului rmas pe tija b; Pasul 3: - mutarea a n-1 discuri de pe tija c pe tija b, utiliznd ca tij intermediar tija a.

#include<iostream.h> char a,b,c; int n; void h(int n,char a,char b, char c) { if(n==1) cout<<a<<b<<" "; else { h(n-1,a,b,c); cout<<a<<b<<" "; h(n-1,c,b,a); } } void main() { cout<<"n=";cin>>n; h(n,a',b',c'); }

You might also like