网站关键词越多越好吗/网址查询域名
汉诺塔是指如下图所示,在A轴上有n个物块且每次只能移动一个物块,借助B轴将所有的A轴上的物块放到C轴上,且每次只能将小物块放到大物块上面,不能颠倒次序。当我们采用递归的求解思想,解决这个问题时我们可以将其分解为若干个子问题,如n时我们可以将n-1看作一个整体,让n-1借助C轴全部到B轴上去,之后在将最后一个重A轴移动轴到C轴上去,接下来在将B轴上的n-1个借助C轴移动到A轴上去,之后在将B轴的最后一个移动到C轴上去,如下图所示当n=3,将前两个看成一个整体,借助C轴全部移动到B轴,然后在将3盘移动到C轴,最后将B轴上的1,2借助A轴将B轴上的1移动到A,将B上的2移动到C,最后将A轴上的1移动到C轴上。
int step = 0;
void ha(int n, int start, int trans, int end)
{if (n == 1){step++;}else{step++;ha(n - 1, start, end, trans);ha(n - 1, trans, end, start);}
}
void test()
{ha(3, 1, 2, 3);printf("%d", step);
}
int main()
{test();return 0;
}
移动物块的次数