汉诺塔问题C#

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);
        }
    }
}
posted @ 2009-07-07 11:33  Chris Cheung  阅读(412)  评论(0)    收藏  举报