Формулировка задачи: Имеется три палочки, на первую одето n разных колец пирамидкой, самое большое внизу, самое маленькое - вверху. Найти последовательность перекладывания колец, которая переместит пирамиду на вторую палочку. Перекладывать можно только по одному кольцу и класть либо на большее кольцо, либо на пустую палочку. классический пример рекурсивного алгоритма. Код:
| Код | void tower(int n,int s1,int s2,int s3){ if(n==1)cout<<s1<<"=>"<<s2<<endl; else{ tower(n-1,s1,s3,s2); tower(1,s1,s2,s3); tower(n-1,s3,s2,s1); } }
|
Функция реализует перекладывание n колец с паочки s1на s2 и протоколирует все действия на экране.
|