Графики жестки, потому что большинство нетривиальных проблем графика имеет тенденцию требовать, чтобы достойная сумма фактического кода реализовала, если больше, чем эскиз алгоритма требуются. Многое из него имеет тенденцию сводиться, знает ли кандидат кратчайший путь и алгоритмы обхода графика, знакомо с типами цикла и обнаружением, и знают ли они границы сложности. Я думаю, что много вопросов об этом материале сводится к мелочам больше, чем на месте способность к креативному мышлению.
я думаю, что проблемы, связанные с деревьями, имеют тенденцию покрывать большинство трудностей вопросов о графике, но без такого же количества сложности кода.
мне нравится Euler проблема Проекта, которая просит находить самый дорогой путь вниз деревом (16/67); общий предок является пользой, нагреваются, но много людей видело его. Прося, чтобы кто-то разработал древовидный класс, выполните обходы, и затем фигурируйте, из которых обходов они могли восстановить дерево, также дает некоторое понимание реализация алгоритма и структура данных. Строгая-Brocot проблема программирования также интересна и быстра для разработки на плате ( http://online-judge.uva.es/p/v100/10077.html ).
C Python (эталонная реализация) использует подсчет ссылок и сборку мусора. Когда количество ссылок на объект уменьшается до 0, он автоматически восстанавливается. Сборка мусора обычно освобождает только те объекты, которые ссылаются друг на друга (или другие объекты из них) и, следовательно, не могут быть возвращены путем подсчета ссылок.
Таким образом, в большинстве случаев локальные переменные восстанавливаются в конце функции, потому что при выходе из функции объекты перестают ссылаться откуда угодно. Так что ваши операторы "del" совершенно не нужны, потому что Python все равно делает это.
Объекты Python никогда не удаляются явно. Единственный способ по-настоящему освободить память от объектов Python, на которые нет ссылок, - это использовать сборщик мусора. Ключевое слово del
просто отвязывает имя от объекта, но объект по-прежнему необходимо очистить от мусора.
Если вы действительно думаете, что должны, вы можете принудительно запустить сборщик мусора с помощью модуля gc
, но это почти наверняка преждевременная оптимизация, и вы, скорее всего, будете выполнять сборку мусора в неподходящее время. или иным образом неэффективно, если только вы действительно не знаете, что делаете.
Использование del
, как указано выше, не имеет реального эффекта, поскольку эти имена были бы удалены по мере удаления в любом случае. Чтобы быть уверенным, вам потребуется выполнить явную сборку мусора (r).
Python использует сборку мусора. Это означает, что вам не нужно заботиться о памяти, поскольку она автоматически освобождается, когда больше не используется.