#78 closed ожидается проверка (задача сдана)
hw2
Reported by: | shenbin.ilya | Owned by: | Vladimir Rutsky |
---|---|---|---|
Priority: | проверка | Milestone: | |
Component: | HA#2 huffman | Version: | 1.0 |
Keywords: | Cc: | ilya.shenbin@… |
Description
Change History (6)
comment:1 Changed 7 years ago by
Milestone: | ha2-milestone2 → ha2-deadline |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 7 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Всё исправлено, подробнее по некоторым пунктам:
2) В случае равенства частот теперь производится сравнение по символу из самого левого листа дерева (т.к. все символы в листьях уникальны, а сравниваемые деревья не пересекаются, то между такими деревьями всегда можно поставить строгое неравенство).
3) Дважды считывался последний символ файла.
5) Если в исходном файле встречался только один уникальный символ, то к построению дерева добавляю еще один символ с нулевой частотой (исключительно ради удобства). Коды при этом остаются оптимальными. abababab.1.in теперь упаковывается в один байт.
comment:3 Changed 7 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Замечания:
- При распаковке вы выводите статистике не в том порядке.
- Вы не освобождаете память от "лишних" узлов дерева, которые создаёте здесь:
std::vector<Node *> nodes_array(256); for (int i = 0; i < 256; i++) { nodes_array[i] = new Node((byte) i, count_table[i]); }
comment:4 Changed 7 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Исправил.
Лишние узлы теперь не создаю.
comment:5 Changed 7 years ago by
Resolution: | → задача сдана |
---|---|
Status: | new → closed |
Решение зачтено, но с минусом (из-за последних ошибок, исправленный после последней проверки).
Замечания:
define
:std::priority_queue
не гарантирует, что при добавлении элементов с одним приоритетом они будут извлечены в каком-то определённом порядке, поэтому теоретически ваше решение может строить различные деревья при кодировании и декодировании, если у каких-то символов одинаковый частота встречаемости, при приведёт к ошибочному декодированию.ab.1.in
abababab.1.in
должен упаковаться в один байт, а у вас упаковывается в два).Исправьте, пожалуйста, в ближайшее время.