TURNURILE DIN HANOI DIVIDE ET IMPERA Turnurile din

  • Slides: 7
Download presentation
TURNURILE DIN HANOI “DIVIDE ET IMPERA”

TURNURILE DIN HANOI “DIVIDE ET IMPERA”

Turnurile din Hanoi Problema turnurilor din Hanoi este o problemă-joc propusă de matematicianul francez

Turnurile din Hanoi Problema turnurilor din Hanoi este o problemă-joc propusă de matematicianul francez Edouard Lucas, în 1883. El s-a inspirat din legenda unui templu hindus.

Legenda Atunci când lumea a fost creată, preoţilor dintr-un templu din Benares (India) le-au

Legenda Atunci când lumea a fost creată, preoţilor dintr-un templu din Benares (India) le-au fost dăruite 3 ace de diamant şi 64 discuri de aur.

Preoţilor li s-a poruncit să depună pe acul din stânga toate discurile, în ordine

Preoţilor li s-a poruncit să depună pe acul din stânga toate discurile, în ordine descrescătoare a diametrelor, apoi să mute întregul turn astfel format pe acul din dreapta, folosind acul din mijloc ca intermediar, mutând câte un disc odată şi fără a pune un disc mai mare peste un disc mai mic. În conformitate cu legenda, Dumnezeu le-a zis oamenilor: ”Când veţi termina de mutat turnul, atunci lumea se va sfârşi !”

Timpul de lucru Dacă preoţii ar lucra zi şi noapte, făcând o mutare în

Timpul de lucru Dacă preoţii ar lucra zi şi noapte, făcând o mutare în fiecare secundă, le-ar lua mai mult de 580 miliarde de ani pentru a termina mutarea turnului format din cele 64 discuri. Pentru 64 discuri: 18. 446. 744. 073. 709. 551. 615 mutări 580. 000 ani

Turnurile din Hanoi A B C

Turnurile din Hanoi A B C

Algoritm C/C++ #include<iostream. h> void hanoi(int n, char A, char B, char C) {

Algoritm C/C++ #include<iostream. h> void hanoi(int n, char A, char B, char C) { if ( n==1 ) cout << A << B << " "; else { hanoi(n-1, A, C, B); cout << A << B << " "; hanoi(n-1, C, B, A); } } void main() { int n; cout << “Numarul de discuri, n= "; cin >> n; hanoi(n, 'A', 'B', 'C'); }