汉诺塔
1. 汉诺塔问题:
设有三个塔座,依次命名为X,Y,Z,设n个直径不同的圆盘,从小到大依次编号为1,2,3,…….n。开始时,它们全部按递减的次序插在塔座上。现要求按下列规则把n个圆盘按次序插放在Z塔座上。
(1) 每次只能移动一个圆盘;
(2) 圆盘可以从任一个塔座上移到另一个塔座上;
(3) 任何时刻都不能把一个较大的圆盘压在较小的圆盘上。
#include<cstdio> using namespace std; void han(int n,char a,char b,char c) { if(n==1){ printf("%c->%c\n",a,c); return; } han(n-1,a,c,b); printf("%c->%c\n",a,c); han(n-1,b,a,c); } int main() { int n; scanf("%d",&n); han(n,'A','B','C'); return 0; }