2015-09-26 3 views
-1

Рассмотрим оригинальную башню проблемы Ханоя с одним дополнительным условием:Башня Ханоя, не двигаясь непосредственно от дист до температуры

  • Если у вас есть 3 полюс A, B и C вы не можете переместить диск напрямую от A до B или B до A

Это означает, что из известного рекурсивного решения нам не разрешено начинать старт или темп.

void hanoi(int n, char start, char temp, char finish){ 
    if (n== 1) 
     cout << start << " -> " << finish; 
    else { 
     hanoi(n - 1, start, finish, temp); 
     cout << start << " -> " << finish; 
     hanoi(n - 1, temp, start, finish); 
    } 
} 

Может ли кто-нибудь помочь мне найти решение проблемы?

+1

Что заставляет вас думать, что есть решение? –

+0

Вы имеете в виду, что нет? – Mehdi

+0

Я не знаю; вы, кажется, думаете, что есть, поэтому я задавался вопросом, какова основа для этого. –

ответ

0

Вместо прямого перемещения от A до B просто выполните промежуточное перемещение A-> C-> B. Если реализация правильная, всегда должно быть сделано это.

+0

Я пробовал, что не работает – Mehdi

+0

Пожалуйста, добавьте более подробную информацию в «не работает» – Paul92

+0

первое движение всегда a -> c, а второе - -> b, поэтому мы получаем a -> c, a -> c, a -> b – Mehdi

 Смежные вопросы

  • Нет связанных вопросов^_^