Академический Документы
Профессиональный Документы
Культура Документы
Приложение 6
к рабочей программе
КОНТРОЛЬНОЙ РАБОТЫ
по дисциплине
Алгоритмы и структуры данных
МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ
В качестве контрольной работы студентам предлагается решить задачи по
дисциплине «Алгоритмы и структуры данных».
Задачи должны быть решены на одном из языков программирования: C#, Java
(Kotlin) или C++.
Перед выполнением задания студент должен изучить материалы по темам
«Введение в алгоритмы и структуры данных. Рекурсия», «Алгоритмы сортировки»,
«Элементарные структуры данных».
По итогам решенных задач студент должен подготовить текстовый файл, в котором
содержится отчет о проделанной работе. По каждой задаче в отчете должно быть
представлено: постановка задачи, ход решения, алгоритм решения (код программы),
пример работы программы, тестирование программы.
Постановка задачи копируется из условий. Ход решения является описательным
пунктом – здесь описывается логика решения задачи на естественном языке.Код
программы обязательно должен содержать комментарии. Пример работы программы
должен содержать скриншоты программы при выполнении.
В пункте «Тестирование» должны быть представлены наборы тестовых данных (не
менее 10-ти наборов, соответствующие условиям задачи). Хотя бы один из тестовых
наборов должен отражать крайние значения (например, если максимально введенное
число 1000000). Также, по каждому тестовому набору должны быть представлены время
выполнения программы и затраченная память. Рекомендуется, оформить данный пункт в
виде таблицы, содержащий следующие поля: номер, входные данные, выходные данные
(полученные программой), корректность (да/нет), время выполнения (в миллисекундах),
память (в Мб). Для измерения времени и памяти необходимо использовать возможности
выбранного языка (например, в C# для измерения времени используется StopWatch).
Для измерения времени выполнения метода на языке C# следует использовать
следующую конструкцию:
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
// здесь пишется тестируемый метод
stopWatch.Stop();
Console.WriteLine("RunTime: " + stopWatch.Elapsed);
Для измерения объема затраченной дополнительной памяти в методе на языке C#
можно использовать следующую конструкцию:
long before = GC.GetTotalMemory(false);
// здесь пишется тестируемый метод
long after = GC.GetTotalMemory(false);
long consumedInMegabytes = (after - before) / (1024 * 1024);
Console.WriteLine(“Memory is {0} Mb.”, consumedInMegabytes);
При выполнении заданий необходимо обязательно делать такие измерения.
Подготовленный отчет оформляется по требованиям УрГЭУ к оформлению и
сдается преподавателю.
Контрольная работа состоит из 3-х заданий. Вариант выбирается по первой букве
фамилии студента:
Номера задач
Фамилия Вариант Задание 1 Задание 2 Задание 3
А 1 1 7 24
БА-БИ 2 3 8 23
БК-БЯ 3 4 8 13
В 4 3 11 15
Г 5 6 11 21
Д 6 5 10 23
Е, Ё 7 2 8 22
Ж 8 6 7 13
З 9 5 11 19
И 10 3 10 20
КА-КО 11 1 9 21
КП-КЯ 12 4 11 25
Л 13 4 9 19
МА-МЗ 14 6 7 16
МИ-МЯ 15 5 10 18
НА-НМ 16 2 11 22
НН-НЯ 17 6 7 24
О 18 5 9 25
П 19 3 8 18
Р 20 5 7 12
С 21 3 10 22
Т 22 6 9 15
У 23 4 11 18
Ф 24 6 8 20
Х 25 6 10 14
Ц, Ч 26 1 10 21
Ш, Щ 27 4 8 17
Э 28 2 7 16
Ю 29 4 9 23
Я 30 4 11 19
n = int(input())
w = list(map(int, input().split()))
total_weight = sum(w)
dp = [[False] * (total_weight//2 + 1) for _ in range(n+1)]
dp[0][0] = True
import heapq
n = int(input())
menu = [input() for _ in range(n)]
k = int(input())
dangerous = []
for i in range(k+1):
ni = int(input())
if ni == 0:
dangerous.append(set())
else:
dangerous.append(set(input().split()))
m = int(input())
5
chicken
rice
soup
bread
salad
3
2
chicken soup
1
salad
0
4
4
4