Алгоритмы и структуры данных. Подгруппа 106-2 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Содержимое страницы заменено на «Семинар 29.01<br> Семинар 3.02 Подгруппа 106-2|Семи…»)
Строка 1: Строка 1:
Семинар 29.01
+
[[Семинар 29.01 Подгруппа 106-2|Семинар 29.01]]<br>
 
+
[[Семинар 3.02 Подгруппа 106-2|Семинар 3.02]]<br>
Домашнее задание:
+
 
+
1. Реализовать вычисление полинома в точке при помощи схемы Горнера и без нее.
+
Интерфейс алгоритма может быть, например, такой:
+
  int CalculatePolynomial(const vector<int>& coefficients, int value);
+
Написать тесты для обоих функций. В стресс тесте можно сравнивать значения полиномов, посчитанные двумя функциями.
+
Сравнить быстродействие алгоритмов при помощи clock() из <ctime>.
+
 
+
2. Реализовать быстрое возведение в степень и написать тесты для него.
+
 
+
3. Реализовать подсчет k-ой статистики за гарантированное линейное время.
+
Написать тесты.
+
Сравнить быстродействие этого алгоритма с QuickSelect, который вы писали после прошлого семинара.
+
 
+
Для каждой задачки нужно создать ревью.
+
Тесты и сравнение быстродействия нужно писать в одном ревью. Функция main() в этом случае будет выглядеть примерно так:
+
 
+
  void Test() {
+
    CheckManualTests();
+
    CheckCornerCases();
+
    RunStressTest();
+
  }
+
 
+
  void CompareSpeed() {
+
    // cout time to run each algorithm.
+
  }
+
 
+
  int main() {
+
    Test();
+
    CompareSpeed();
+
    return 0;
+
  }
+
 
+
Семинар 3.02
+
 
+
Домашнее задание:
+
 
+
Решить задачу:
+
Алфавит из всех маленьких латинских букв и пробела закодирован числами следующим способом:
+
  'a' -> 1
+
  'b' -> 2
+
  'c' -> 3
+
  ...
+
  'z' -> 26
+
  ' ' -> 27
+
На вход программы подается строка из цифр. Нужно посчитать, сколькими способами можно раскодировать эту строку.
+
Решить программу нужно при помощи динамического программирования.
+
К решению нужно написать стресс тест, в котором ответ программы, посчитанный при помощи динамического программирования сравнивается с ответом, полученным при помощи рекурсивного brute force решения.
+
Для этого также нужно реализовать рекурсивное решение.
+
Решенную задачу нужно отправить на ревью на адрес a.v.dorogush@gmail.com
+
 
+
 
[[Семинар 5.02 Подгруппа 106-2|Семинар 5.02]]<br>
 
[[Семинар 5.02 Подгруппа 106-2|Семинар 5.02]]<br>

Версия 13:03, 5 февраля 2015

Семинар 29.01
Семинар 3.02
Семинар 5.02