前言:有接近两个多月没有写博客了,上一写博客还是放暑假的时候8月16号,进入大三以来,自己对放松了自己好多,都不怎么搞技术了,不过我是不会这样一直放纵自己的,是时候搞下技术了,要好好珍惜大学时光。
hanoi塔问题
算法思路:我们可以把这个问题分成两部分,一部分是第n个盘子,一部分是前n-1个盘子
(相当于一个盘子),也就是说现在就相当于只有两个盘子在A上,那么我们只需要把第n个
盘子移到B上,前n-1个盘子移动到C上,然后把C上的前n-1个盘子移到B上,也就是说如果
能把前n-1个盘子都移到C上我们就可以把n个盘子从A移到B上,那么我们只需要把前n-2
盘子移到C上我们就可以把n-1个盘子移好,………如此下去,我们可以得出如下算法:
public static void Hanoi(int n,char a,char b,char c){
if(n>0)
{
Hanoi(n-1,a,c,b); //将A杆上面的n-1个盘子,借组B杆,移到C杆上
move(a,b);
Hanoi(n-1,c,b,a); //将C杆上的n-1个盘子,借组A杆,移到B杆上
}
}
小记:这只是一个小小的起步,坚持才是最重要的,希望csdn可以伴我走完大学旅程。