Ханойские башни

Тема в разделе "Другие", создана пользователем -, 29 фев 2004.

Статус темы:
Закрыта.
  1. Гость

    Господа программисты, помогите решить задачу!
    Я начинающий программист и эти Ханойские башни пока не поддаются, поэтому обращаюсь к более опытным программистам.
    Задача решается с помощью рекурсии. Имеется 3 колышка, на первый колышек нанизаны, допустим 5 дисков,и нанизаны они так, что из размеры последовательно уменьшаются к вершине. Нужно переместить все диски с первого колышка на второй колышек при условии, что каждый раз берётся только по одному диску и больший диск никогда не должен находиться над меньшим диском. Временно диски можно размещать на третьем колышке.
    Если это возможно, то решить задачу без использования массивов.
    VB.6 или VB.Net
     
  2. HuMmmBug

    HuMmmBug Гость

    Тебе ханойка нужна только на VB?
    Количество дисков, надеюсь, не планируется больше 64... %))) [если известен смысл этой башни]
     
  3. Гость

    Да, мне надо только на VB....... Как это не ужасно....
     
  4. HuMmmBug

    HuMmmBug Гость

    наверное, на лабах задали? %)))

    посмотрим что мона сделать. без гарантий.
     
  5. HuMmmBug

    HuMmmBug Гость

    как я и полагал в готовых исходниках у меня почему-то не оказалось этой задачи именно на vb.
    на as, ls есть, а вот vb - никак нет. %( странно.
    писать сейчас, к сожалению, нет времени - перегрузка итак по всем текущим проектам.
    извини.
     
  6. Гость

    Пожалуйста помогите!!!
    Мне нужна программа "Ханойские башни" для летней практики по C++. Программа должна быть рекурсивной. Не мотли бы вы помочь кто чем может? :)
     
  7. anton

    anton Гость

    вот что я надумал

    #define N 5

    void h(int *i, int *j, int *k)
    { if(*i==0)return;

    h(i+1, k, j);
    k++; *k=*i; i--;
    h(j,i,k);
    }

    void main()
    { int A[N],B[N],C[N];
    //
    инициализация массивов A=(4,3,2,1,0), B=(0,0,0,0,0), C=(0,0,0,0,0);
    //
    h(A,B,C);
    }

    Суть в том, что есть три целочисленных массива - башни. A,B,C.
    Рекурсивная процедура h:
    шаг1. перекладываем башенку поменьше с диска i, оставляя нижний диск, на башню j, используя диск k как промежуточный.
    шаг2. перекладываем диск с i на k.
    шаг3. перекладываем башенку с j на k, используя i как промежуточный.

    остальное додумывай :p
     
  8. anton

    anton Гость

    не принимать за истину, я не спец
     
  9. Arush

    Arush Гость

    Насколько мне неизменяет память эта задача с решением входила во все советские учебники по программированию :)
    Может стоит поискать в интернете? :)
    Кстати такие вещи должны быть например на http://algolist.manual.ru/
    :D
     
  10. Shooroop

    Shooroop Гость

    Всем привет!
    Нужна программа про башни на обьектно ориентированном с++, но не на билдере.
    У когоесть или кто может помочь в решении данной проблемы буду признателен!!!
     
Статус темы:
Закрыта.

Поделиться этой страницей