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);
}
}
}