using System;
using System.Collections.Generic;
using System.Collections;namespace hanoi
{
class HanoiClass:Stack
{
public HanoiClass(int n)
{
}
public HanoiClass()
{
}
private void hanoi(int n,HanoiClass x,HanoiClass y,HanoiClass z)
{
if(n==1)
move(x,z);
else
{
hanoi(n-1,x,z,y);
move(x,z);
hanoi(n-1,y,x,z);
}
}
private void move(HanoiClass x,HanoiClass z)
{
z.Push(x.Pop());
}
public static void Main()
{
HanoiClass hanoi1=new HanoiClass(3);
HanoiClass hanoi2=new HanoiClass();
hanoi1.Push(1);
hanoi1.Push(2);
hanoi1.Push(3);
hanoi1.hanoi(hanoi1.Count,hanoi1,new HanoiClass(),hanoi2);
int z=hanoi2.Count;
for(int i=0;i<z;i++)
{
Console.WriteLine(hanoi2.Pop());
}
Console.Read();
}
}
}
把一个栈中的三个数移动到另一个栈.原理同汉诺塔..
上面程序是否正确?
如果正确请给出每步执行过程
不正确请给出正确代码...谢谢
using System.Collections.Generic;
using System.Collections;namespace hanoi
{
class HanoiClass:Stack
{
public HanoiClass(int n)
{
}
public HanoiClass()
{
}
private void hanoi(int n,HanoiClass x,HanoiClass y,HanoiClass z)
{
if(n==1)
move(x,z);
else
{
hanoi(n-1,x,z,y);
move(x,z);
hanoi(n-1,y,x,z);
}
}
private void move(HanoiClass x,HanoiClass z)
{
z.Push(x.Pop());
}
public static void Main()
{
HanoiClass hanoi1=new HanoiClass(3);
HanoiClass hanoi2=new HanoiClass();
hanoi1.Push(1);
hanoi1.Push(2);
hanoi1.Push(3);
hanoi1.hanoi(hanoi1.Count,hanoi1,new HanoiClass(),hanoi2);
int z=hanoi2.Count;
for(int i=0;i<z;i++)
{
Console.WriteLine(hanoi2.Pop());
}
Console.Read();
}
}
}
把一个栈中的三个数移动到另一个栈.原理同汉诺塔..
上面程序是否正确?
如果正确请给出每步执行过程
不正确请给出正确代码...谢谢
解决方案 »
- WPF问题
- 很奇怪的问题,我要疯了。编的登录窗口老是报错啊。说不包含适合于入口点的静态“Main”方法,这是怎么回事啊。求前辈指教一下
- Linq to sql 查询
- 求C#中跨行匹配的正则表达式
- 关于我的VS2008的疑问
- CSDN论坛为什么不能输入韩文???
- 请问C#中如何给动态生成的控件设置字体大小
- c#中如何将"65"这个字符串转换成整数65,或者是将整数65转换成字符串"65"
- 十万火急~~!!在C#中怎么做一个只有密码和用户名登录的程序!!求各位高手顶立相住
- 这怎么冒出来的"int?"要强制转换成"int"
- 重装sql server 2005后出现的问题
- 大家帮帮忙treeview的问题?
using System;
using System.Collections.Generic;
using System.Text;namespace Hannoi
{
class Han //2008 Varrily
{
public void Move(int n, char x, char y)
{
Console.WriteLine("No.{0} From {1} Move to {2}", n, x, y);
}
public void Hannoi(int n, char a, char b, char c)
{
if (n == 1)
{
Move(1, a, c);
}
else
{
Hannoi(n - 1, a, c, b);
Move(n, a, c);
Hannoi(n - 1, b, a, c);
}
}
}
class Program
{
static void Main(string[] args)
{
int Number;
Console.Write("Input Disk Number : ");
Number = Convert.ToInt32(Console.ReadLine());
Han Result = new Han();
Result.Hannoi(Number,'A','B','C');
Console.ReadLine();
}
}
}