Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЕКУРСИЯ1_Лекция15.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
94.97 Кб
Скачать

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-->

CОРТИРОВКА СЛИЯНИЕМ

. . . . . ..

iInt main()

{int A[1000],B[1000];

iInt n, I, k;

cin >> n;

for(i=0;i<n;i++ )cin>>A[i];

k=1;

while (k<n)

{i-0;

While (i+k<n)

{sl(A+i, A+i+k, k, min(k, n-k), B+i);

i+=2*k;

}

if (i>n) i=n;

for (j=0;j<I;j++)

A[j]=B[j];

k=k<<1;

}

for (i=0; i<n;i++)

cout<<A[i]<<” “;

return 0;

}