Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Часть 1. Задачи на структуры данных




Замечание. При реализации алгоритмов использовать динамические структуры данных – списки, деревья, таблицы.

 

1. Составить программу поиска в ширину в графе. Составить программу поиска в глубину в графе. Граф представлен матрицей смежности.

Прикладная задача.

В. Липский «Комбинаторика для программистов».

 

2. Составить программу перехода от представления графа матрицей смежности к представлению графа списками инцидентности.

Прикладная задача.

В. Липский «Комбинаторика для программистов».

 

Задача коммивояжера.

 

3. Составить программу работы с многочленами. Хранить коэффициенты – в динамических списках. Если аi коэффициент равен 0, его можно не хранить. Например, для P(x) = 50x40–3x8+x можно хранить только три значения.

Функциональность может быть следующей:

1) вычисление значения в точке х;

2) вычисление коэффициентов производной;

3) вычисление значения производной;

4) сложение, вычитание многочленов;

5) построение графиков;

6) проверка равенства многочленов.

 

4. Составить программу поиска кратчайших путей от данной вершины ко всем остальным в орграфе. Граф представлен матрицей смежности (матрицей весов дуг).

Прикладная задача.

В. Липский «Комбинаторика для программистов».

 

5. Составить программу построения лабиринтов.

Ч. Уэзерелл «Этюды для программистов».

 

6. Составить программу работы с таблицами со случайным перемешиванием (хеш-таблицами) в варианте с открытым перемешиванием.

Прикладная задача.

Лебедев В.Н. «Введение в системы программирования».

П. Холл «Вычислительные структуры. Введение в нечисленное программирование».

 

7. Составить программу работы с таблицами со случайным перемешиванием (хеш-таблицами) в варианте с таблицами переполнения.

Прикладная задача.

Лебедев В.Н. «Введение в системы программирования».

П. Холл «Вычислительные структуры. Введение в нечисленное программирование».

 

8. Составить программу работы с линейным однонаправленным упорядоченным списком (поиск, запись, удаление, замена, объединение).

Прикладная задача.

Лебедев В.Н. «Введение в системы программирования».

Дж. Фостер «Обработка списков».

 

9. Составить программу работы с линейным двунаправленным упорядоченным списком (поиск, запись, удаление, замена, объединение).

Прикладная задача.

Лебедев В.Н. «Введение в системы программирования».

Дж. Фостер «Обработка списков».

 

10. Составить программу работы с кольцевым списком (поиск, запись, удаление, замена, объединение).

Прикладная задача.

Лебедев В.Н. «Введение в системы программирования».

Дж. Фостер «Обработка списков».

 

11. Составить программу для реализации древовидной структуры (генеалогическое дерево).

П. Холл «Вычислительные структуры. Введение в нечисленное программирование».

 

12. С помощью шаблона класса «стек», разработанного самостоятельно, написать калькулятор с операциями сложения, вычитания, деления, умножения, возведения в степень.

 

13. Составить программу сложения, вычитания и умножения разреженных прямоугольных матриц. Разреженной называется матрица большой размерности, большинство элементов которой нулевые. Хранятся только ненулевые элементы в виде списка.

 

14. Прикладная задача – составить программу на тему «Календарь знаменательных дат».

 

15. Моделирование системы массового обслуживания.

Прикладная задача – моделирование системы техосмотра транспорта на основе очередей с приоритетами.

 

16. Моделирование системы массового обслуживания.

Прикладная задача – моделирование системы профосмотра в поликлинике на основе очередей с приоритетами.

 

17. Моделирование системы массового обслуживания.

Прикладная задача – моделирование работы банка.

Пусть в банке n кассиров. Посетитель заходит в банк в некоторое время t1, желая осуществить некоторую финансовую операцию. Эта операция может потребовать для своего выполнения некоторого времени t2. Если кассир свободен, то он немедленно начинает обслуживание посетителя, и тот покинет банк сразу же после завершения операции, то есть во время t1 + t2. Общее время, проведенное посетителем в банке, равно продолжительности выполнения финансовой операции t2. Может случиться так, что все кассиры окажутся заняты обслуживанием посетителей, пришедших в банк ранее. В этом случае к окошку каждого кассира образуется очередь. Посетитель становится в конец самой короткой очереди и ждет завершения обслуживания посетителей, стоящих впереди него. После этого он может приступить к выполнению своих дел. Посетитель покидает банк через t2 единиц времени после достижения им окна кассира. В этом случае время, проведенное им в банке, есть t2 плюс время, проведенное в очереди.

Необходимо узнать, каково среднее время, проводимое посетителем в банке.

 

18. Составить программу – экомодель «Волчий остров».

Ван-Тассел.

 

19. Составить программу – экомодель «Мыши и пшеница».

Гудман, Хидетниеми.

 

20. Составить программу для раскладывания пасьянсов.

Колода – дек, стопки – стек.

Ч. Уэзерелл. «Этюды для программистов».

 

21. Составить программу для игры в карты, например, в дурака.

Колода – дек, стопки – стек.

 

22. Составить программу «Карточные гадания».

Колода – дек, стопки – стек.

Игры. Энциклопедический сборник. Сост. Черноземцев В.А. Чел., 1995.

 

23. Составить программу «Угадай слово» («Балда»).

 

24. Составить программу игры в кроссворды. Еще лучше – составление кроссвордов.

 

25. Реализация ортогонального списка.

Реализовать мультисписок (не менее трех полей указателей, не менее 3-х полей данных – целые числа и строки символов).

Прикладная задача:

 

26. Составить программу «Мешанина» (тест на внимание):

а) анаграммы;

б) воспроизвести на экране расположение ряда геометрических фигур.

 

27. Составить игровую программу «Угадай-ка». На поле 4*4 (5*5 или более) в произвольном порядке выстраиваются простые геометрические фигуры (4-12 видов). Затем расклад закрывается, и игроку предлагается по памяти восстановить расположение фигур, за что начисляются очки.

 

28. Составить программу – игрушку:

а) «Меткий охотник»;

б) «Куры»;

в) «Война на море»;

г) «Звездная война».

 

29. Прикладная задача – составить тестирующую программу:

а) по психологии;

б) по этике;

в) по культуре общения;

 

В городе расположены n автобусных остановок, обозначенных числами из N={1,2,....,n}. Имеется R автобусных маршрутов, заданных последовательностями соседних остановок при движении автобуса в одном направлении:

М1={I11,I12,...,I1m1},

М2={I21,I22,...,I2m2},

.....

Mr={Ir1,Ir2,...,Irmr},

где Ijk натуральное.

Написать программу, которая по заданным номерам остановок I и J определяет наиболее быстрый путь перемещения пассажира из остановки I в остановку J с использованием имеющихся маршрутов автобусов при условии, что время движения между соседними остановками у всех маршрутов одинаково и в 3 раза меньше времени изменения маршрута. Кроме того, автобусы могут двигаться в обоих направлениях.

 

Задача.

Матрица размера N*M определяет некоторый лабиринт. B матрице элемент 1 обозначает стену, а 0 определяет свободное место. В первой строке матрицы определяются входы x(i), а в последней выходы y(i), i=1,..,k, которые должны быть нулевыми элементами.

Необходимо определить, можно ли

а) провести k человек от входа x(i) до выхода y(i) соответственно, i=1,..,k, таким образом, чтобы каждое свободное место посещалось не более одного раза.

б) то же, но человека можно выводить через любой из выходов. Примечание: Движение в лабиринте осуществляется только по вертикали или горизонтали.

 

Задача.

Есть министерство из N чиновников, где N натуральное число. У каждого из чиновников могут быть подчиненные и начальники, причем справедливы правила: подчиненные моего подчиненного – мои подчиненные, начальники моего начальника – мои начальники, мой начальник не есть мой подчиненный, у каждого чиновника только один непосредственный начальник.

Для того чтобы получить лицензию на предпринимательскую деятельность, необходимо получить подпись первого чиновника – начальника всех чиновников. Проблема осложняется тем, что каждый чиновник, вообще говоря, может потребовать «визы», т.е. подписи некоторых своих непосредственных подчиненных и взятку – известное количество долларов. Для каждого чиновника известен непустой список возможных наборов «виз» и соответствующая каждому набору взятка. Пустой набор означает, что данный чиновник не требует виз в данном случае. Чиновник ставит свою подпись лишь после того, как ему представлены все подписи одного из наборов виз и уплачена соответствующая взятка.

Необходимо определить и вывести минимальный по сумме уплаченных взяток допустимый порядок получения подписей для лицензии и стоимость.

Ограничения: N<100. Количество наборов для каждого чиновника не превосходит 15.

 

 





Поделиться с друзьями:


Дата добавления: 2016-10-07; Мы поможем в написании ваших работ!; просмотров: 1036 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

2302 - | 2033 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.