using System;
using System.Collections.Generic;
namespace Hanoi
{
class Program
{
public static int count;
static void Main(string[] args)
{
Stack<int> a = new Stack<int>();
a.Push(7); a.Push(4); a.Push(2);
Stack<int> b = new Stack<int>();
Stack<int> c = new Stack<int>();
foreach (int tmp in a)
{
Console.WriteLine(tmp.ToString());
}
HanoiFun(3, a, b, c);
foreach (int tmp2 in c)
{
Console.WriteLine(tmp2.ToString());
}
Console.WriteLine(count.ToString());
Console.Read();
}
public static void HanoiFun(int n, Stack<int> a, Stack<int> b, Stack<int> c)
{
if (n == 1)
{
Move(a, c);
++count;
}
else
{
++count;
HanoiFun(n - 1, a, c, b);
Move(a, c);
HanoiFun(n - 1, b, a, c);
}
}
public static void Move(Stack<int> a, Stack<int> b)
{
if (a.Count <= 0)
{
return;
}
int temp = a.Pop();
b.Push(temp);
}
}
}
using System.Collections.Generic;
namespace Hanoi
{
class Program
{
public static int count;
static void Main(string[] args)
{
Stack<int> a = new Stack<int>();
a.Push(7); a.Push(4); a.Push(2);
Stack<int> b = new Stack<int>();
Stack<int> c = new Stack<int>();
foreach (int tmp in a)
{
Console.WriteLine(tmp.ToString());
}
HanoiFun(3, a, b, c);
foreach (int tmp2 in c)
{
Console.WriteLine(tmp2.ToString());
}
Console.WriteLine(count.ToString());
Console.Read();
}
public static void HanoiFun(int n, Stack<int> a, Stack<int> b, Stack<int> c)
{
if (n == 1)
{
Move(a, c);
++count;
}
else
{
++count;
HanoiFun(n - 1, a, c, b);
Move(a, c);
HanoiFun(n - 1, b, a, c);
}
}
public static void Move(Stack<int> a, Stack<int> b)
{
if (a.Count <= 0)
{
return;
}
int temp = a.Pop();
b.Push(temp);
}
}
}