汉诺塔1


汉诺塔这种东西不能从程序的角度想 要从生活的角度想 原来从堆栈进出角度考虑就特别复杂 有些事是一层窗户纸 想多了反而没用


if a上面只剩下一个盘子 移到c else 把n-1的盘子移到b a->c b->c


 
using System;

using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1.基础.算法
{
public class 汉诺塔
{

int count = 1;

void move(int n,char x, char y)
{
Console.Write("" + count + "" + n + ":{0}-->{1}\n", x, y);
}



void hanoi(int n, char one, char two, char three)
{


if (n == 1)
{
move(n,one, three);
count++;
}
else
{
hanoi(n - 1, one, three, two);
move(n,one, three);
count++;
hanoi(n - 1, two, one, three);
}
}

public void main1()
{
int m;
Console.WriteLine("input the number of disks:");
m=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the step to moving %3d diskes:\n", m);
hanoi(m, 'A', 'B', 'C');
}


}


 

posted on 2012-01-30 10:45  xinshenghu  阅读(191)  评论(0编辑  收藏  举报