Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichni_vkazivki_do_kursovoyi_roboti_chastin...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
288.77 Кб
Скачать

3.2.4. Застосування атд " дерево " до розв’язання прикладних задач

4.1. Операційні системи типу UNIX, PC-DOS (старші версії) підтримують деревоподібну структуру збереження даних на диску. При цьому мінімальна іменована одиниця інформації називається файлом. Файли об'єднуються в каталоги, кожний з яких теж має ім'я. Множина каталогів і окремих файлів можуть у свою чергу також утворити каталог більш високого рівня. Каталог найвищого рівня називається кореневим. Кількість рівнів вкладеності не обмежена. Розглядати тільки випадки без порожніх каталогів (тобто каталогів, що не мають файлів).

Скласти програму для виводу на екран по рівнях:

а) списку всіх елементів даних, "вкладених" у довільний каталог на всіх рівнях;

б) списку всіх каталогів, "вкладених" у довільний каталог;

в) списку всіх файлів, "вкладених" у довільний каталог;

г) списку всіх елементів даних кореневого каталогу, виведених в алфавітному порядку.

Приклад:

На заданій схемі елемент 0 є кореневим каталогом диску;

елементи 2,3,6,10 - каталогами; елементи 1,4,7,9,8,5 - файлами.

Для каталогу 2 перше завдання має виводити таку послідовність:

2

6

4

7

9

Примітка: для всіх завдань замість номерів використовувати імена (текстові значення).

4.2. Глосарій або предметний покажчик підручника складається з впорядкованих по алфавіту основних термінів, кожен з яких супроводжується впорядкованою за зростанням послідовністю номерів сторінок, де він зустрічається, і множиною підтермінів. Підтерміни виводяться на наступних за основним терміном рядках, вони дещо зсунуті вправо відносно основного терміна і впорядковані по алфавіту всередині основного терміна. Кожен підтермін супроводжується впорядкованою за зростанням послідовністю номерів сторінок, де він зустрічається.

Розробити структуру даних для представлення такого предметного покажчика і написати програму для зображення предметного покажчика по вхідних даних, що зберігаються у текстовому файлі.

Кожний вхідний рядок починається або з символу М (основний термін), або з символу S (підтермін). Рядок з символом М містить основний термін, за котрим слідують номери сторінок, на котрих зустрічається основний термін. Рядок з символом S будується аналогічно, за винятком того, що він містить не основний термін, а підтермін. Вхідні рядки з’являються у будь-якому порядку. Єдина умова: кожен підтермін вважається підтерміном найближчого попереднього основного терміна. Для одного основного терміна або підтерміна може бути декілька вхідних рядків (всі номери сторінок, що з’являються для конкретного терміна у будь-якому рядку, повинні бути надруковані разом з цим терміном).

4.3. В зовнішньому текстовому файлі записано програму на мові Паскаль. Відомо, що в цій програмі є ідентифікатори, кожний з яких містить не більше 9 латинських літер і/або цифр. Надрукувати в алфавітному порядку всі різні ідентифікатори цієї програми, вказавши для кожного з них число його входжень в текст програми (врахувати, що великі і малі букви ототожнюються, текст в середині коментарів не враховується, в записі дійсних чисел може зустрічатися літера Е або е ).

4.4. У деякій країні поліція виявила розгалужену мережу опозиційної партії. Партія сильно законспірована і складається з рядових членів і керівників різних рівнів. На чолі партії стоїть один головний керівник - лідер партії. Всі члени партії пронумеровані від 1 до N. Кожний член партії знає тільки свого безпосереднього керівника (рівно одного) і своїх безпосередніх підлеглих (керівник не знає підлеглих свого підлеглого і навпаки). До початку арештів наказ лідера може бути доведений до будь-якого члена партії. З початком арештів членів партії вона розпадеться на дрібні, не зв'язані один з одним групи. Поліцмейстер запевняє, що група, що складається з менш ніж K членів партії, ідеологічно вироджується і не становить погрози для держави. Прагнучи не упустити престиж країни в очах світової суспільної думки, поліцмейстер поставив задачу зробити мінімальну кількість арештів членів партії так, щоб від неї залишилися тільки маленькі групи.

Написати програму, яка б по вхідним даним, що знаходяться в текстовому файлі, описувала структуру підпільної партії і виводила кількість арештів і номери членів партії, яких потрібно заарештувати. При наявності декількох розв'язків вивести одне з них.

4.5. Написати програму реалізації гри Го-Моку. Це нескладна позиційна гра, яка відома зі стародавніх часів і, напевно, вперше виникла у Японії. Ця гра схожа на хрестики-нолики, але набагато цікавіша. За класичними правилами грають на дошці розміром 19x19 клітин (в програмі реалізуйте альтернативні варіанти: скорочений 9x9 та розширений 29x29 клітин). Гравці ставлять свої фішки на вільні клітини дошки по черзі. Виграє той, кому першому пощастить побудувати власну лінійку з п’яти фішок – горизонтальну, вертикальну або діагональну.

4.6. Задано рядок символів S і набір слів А[1], ..., A[k]. Написати програму розбиття рядка S на слова з набору всіма можливими способами.

Приклад: Вхідні дані Результат розбиття

S=ABBC S = A - B - BC

A[1]=A, S = A - BBC

A[2]=AB, S = AB - BC

A[3]=BC,

A[4]=BBC,

A[5]=H,

A[6]=B

4.7. N кісточок доміно за правилами гри викладаються в прямий ланцюжок, починаючи з кісточки, обраної довільним чином, в обидва кінці доти, поки це можливо. Змоделювати гру в доміно і написати програму

а) побудови самого довгого ланцюжка;

б) знаходження такого варіанта викладання кісточок, при якому до моменту, коли ланцюжок не можна далі продовжити, "на руках" залишиться максимальне число очок.

Приклад: Вхідні дані Результат

N= 5 5

1 2 56:62:21:13:36

1 3

2 6

3 6

5 6

4.8. Нехай задано n чоловіків і n жінок, та два n x n масиви P i Q таких, що P(і, j) вказує на надання переваги і-тим чоловіком j-тої жінки, а Q(i, j) – надання переваги і-тою жінкою j-го чоловіка. Написати програму знаходження таких паросполук чоловіків та жінок , щоб оптимізувати переваги.

4.9. Проблема призначення формулюється так: є n людей, що призначаються на n робіт. Вартість призначення i-людини до j-роботи - COST(i, j). Розробити алгоритм і написати програму, яка призначає кожній людині роботу, при мінімальній загальній вартості призначення.

4.10. Задано n завдань для виконання, але тільки k процесорів, що можуть працювати паралельно. Час, необхідний для виконання і-тої роботи, дорівнює ti. Написати програму, що визначає, які завдання на яких процесорах повинні бути виконані і в якому порядку, щоб остаточний час останнього завдання був мінімізований.