Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

максимальный элемент рассматриваемой совокупности.

Читайте также:
  1. B) Соединение атома водорода одной молекулы с сильно электроотрицательным элементом другой молекулы
  2. d-элементы IV группы
  3. d-элементы V группы
  4. I.II. ЭЛЕМЕНТЫ ФИНАНСОВОЙ ПОЛИТИКИ
  5. II. Основные элементы денежной системы.
  6. III. Составные элементы генерального бюджета.
  7. Lt;сұрақ>Word. Бiр мезетте бiрнеше графикалық элементтердi қалай белгiлеуге болады?
  8. s-, p-Элементы, переходные элементы
  9. Адзінасць выяўлення сіметрычнага палінома праз элементарныя сіметрычныя паліномы.
  10. Азот айналымы. Азот элементтерінің де, өзге элементтер сияқты, айналымы үлкен және кіші циклдерден тұрады.

 

 

             

i j

                             

i j i j

4 3 1 6 8 9 7

j i

Пример. Ханойские башни

sour middle dest

Сведем задачу с n дисками к задаче с n – 1 дисками (фактически, применим метод математической индукции по числу дисков). Пусть нам требуется переложить пирамиду из дисков со штыря с номером 1 (sour) на штырь с номером 3 (dest), используя штырь 2(work) в качестве вспомогательного. Для этого необходимо сначала переложить пирамиду из n – 1 диска со штыря 1 на штырь 2, используя штырь 3 в качестве вспомогательного. Затем переместить оставшийся диск со штыря 1 на штырь 3 и, наконец, переложить пирамиду из n – 1 диска со штыря 2 на штырь 3 используя штырь 1 в качестве вспомогательного.

//hanoy.cpp

#include <fstream>

#include <iostream>

Using namespace std;

Ofstream fout;

Int i;

Void Hanoy(int n, int sour, int dest)

{if (n>0)

{int middle=6-sour-dest;

Hanoy(n-1,sour,middle);

i++;

fout<<i<<". disk "<<n<<" "<<sour<<"-->"<<dest<<endl;

Hanoy(n-1,middle,dest);

}

}

Int main ()

{

Int n;

fout.open("rez.txt");

If (fout.fail())

{cout<<"error open file rez.txt "<<endl; return 1;}

cout<<"--> n ";

cin>>n;

fout<<"n="<<n<<endl;

i=0;

Hanoy(n, 1, 3);

Fout.close();

Return 0;

}

Rez.txt

n=5

1. disk 1 1-->3

2. disk 2 1-->2

3. disk 1 3-->2

4. disk 3 1-->3

5. disk 1 2-->1

6. disk 2 2-->3

7. disk 1 1-->3

8. disk 4 1-->2

9. disk 1 3-->2

10. disk 2 3-->1

11. disk 1 2-->1

12. disk 3 3-->2

13. disk 1 1-->3

14. disk 2 1-->2

15. disk 1 3-->2

16. disk 5 1-->3

17. disk 1 2-->1

18. disk 2 2-->3

19. disk 1 1-->3

20. disk 3 2-->1

21. disk 1 3-->2

22. disk 2 3-->1

23. disk 1 2-->1

24. disk 4 2-->3

25. disk 1 1-->3

26. disk 2 1-->2

27. disk 1 3-->2

28. disk 3 1-->3

29. disk 1 2-->1

30. disk 2 2-->3

31. disk 1 1-->3




Дата добавления: 2014-12-20; просмотров: 93 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав