Ханойские башни - C# (189740)

Узнай цену своей работы

Формулировка задачи:

Просидел над алгоритмом решения этих хайнойских башенок около 6 часов, так и не понял,как его реализовать в c#. По сути,задание,которое дали,разобраться в готовом решении для этой задачи.Вот оно:
private void button1_Click(object sender, EventArgs e)
{
h = new Stack<int>[3];  
h[0] = new Stack<int> ( );
h[1] = new Stack<int> ( );
h[2] = new Stack<int> ( );
h[0].Push(8);
h[0].Push(7);
h[0].Push(6);
h[0].Push(5);
h[0].Push(4);
h[0].Push(3);
h[0].Push(2);
h[0].Push(1);
Hanoi(1, 3, 8);
}
 
private void Hanoi(int from, int to, int c)
{
int to2 = 6 - from - to; //to2 – номер промежуточной башни
if (c > 1)
{
Hanoi(from, to2, c – 1);
Hanoi(from, to, 1);
Hanoi(to2, to, c – 1);
}
else
{
h[to - 1].Push(h[from - 1].Pop()); 
}
}
Как не пытался его обуздать,не получилось.В общем,к чему я пришёл: 1)Для чётного и нечётного количества алгоритм будет отличаться 2)Я затупок В общем, сижу с головной болью.Понимаю,как оно решается в теоретическом плане,не могу реализовать или же понять то,что уже имеется. Буду рад,если кто-нибудь поможет разложить всё по полочкам.Может не только мне пригодится.
Вроде,если упростить пример до 2-x дисков,то всё становится на свои места и проясняется.Думаю,что я понял алгоритм.

Решение задачи: «Ханойские башни»

textual
Листинг программы
using System;
 
 
namespace HanoiTowers
    {
    class Program
        {
        //start - откуда кладем, end - куда кладем, temp - промежуточный диск, disks - кол-во дисков
        static void MoveDisks(int start, int temp, int end, int disks)
            {
            if (disks > 1)
                MoveDisks(start, end, temp, disks-1);    //(шаг №1)
            Console.WriteLine("{0} -> {1}", start, end);   //(шаг №2)
            if (disks > 1)
                MoveDisks(temp, start, end, disks-1);    //(шаг №3)
            }
        
        static void Main(string[] args)
            {
            int start = 1;
            int temp = 2;
            int end = 3;
            MoveDisks(start, temp, end, 4);
            }
        }
    }

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

11   голосов , оценка 4.182 из 5