на с++ пожалуйста
Циклические башни
На дорогах Ханоя было введено одностороннее круговое движение, поэтому теперь диск со стержня 1 можно перекладывать только на стержень 2, со стержня 2 — на 3, а со стержня 3 — на 1.
Решите головоломку с учётом этих ограничений. Вам не нужно находить минимальное решение, но количество совершённых перемещений не должно быть больше 200000 при условии, что количество дисков не превосходит 10.
Входные данные
Задано натуральное число n≤10 — размер пирамидки.
Выходные данные
Программа должна вывести способ перекладывания пирамидки из данного числа дисков со стержня 1 на стержень 3.
Примеры
Ввод
Вывод
3
1 1 2
1 2 3
2 1 2
1 3 1
2 2 3
1 1 2
1 2 3
3 1 2
1 3 1
1 1 2
2 3 1
1 2 3
1 3 1
3 2 3
1 1 2
1 2 3
2 1 2
1 3 1
2 2 3
1 1 2
1 2 3
Answers & Comments
Ответ:
#include <iostream>
#include <vector>
using namespace std;
void hanoi(int n, int f, int t) {
if (n == 0) {
return;
}
int v = 6 - f - t;
if (f == t - 1 || (f == 3 && t == 1)){
hanoi(n - 1, f, v);
cout << n << " " << f << " " << t << endl;
hanoi(n - 1, v, t);
}else{
hanoi(n - 1, f, t);
cout << n << " " << f << " " << v << endl;
hanoi(n - 1, t, f);
cout << n << " " << v << " " << t << endl;
hanoi(n - 1, f, t);
}
}
int main (){
int n;
cin >> n;
hanoi(n, 0, 0); //тут какая - то проблема при выводе, я не понял как выводить их. Если вдруг решите проблему, то напишите в комменты под задачей!!
}
Объяснение:
Мне тоже надо срочно, кто сделал "Быстрое возведение в степень" и
"Количество разбиений на слагаемые" отправьте пж мне решения
int n ;
cin >> n ;
hanoi(n, 1 ,3);
return 0;
}