Избегайте TLE в Python в соревновательном программировании
Опубликовано: 30 Ноября, 2021
Причины получения TLE :
- Он медленнее по сравнению с другими языками программирования.
- Он предлагает более медленный ввод / вывод.
- Он имеет меньшую глубину рекурсии, что часто дает TLE в задачах рекурсии и графов.
Советы, как избежать TLE с Python :
Переход к итерационному подходу :
- Любую проблему рекурсии можно преобразовать в итеративный подход, поэтому попробуйте использовать итерационный подход вместо рекурсии.
- Использование стека и цикла while может сэкономить время выполнения программы.
Программа 1:
Ниже приведен код, показывающий время, необходимое для вычисления факториала числа в обоих подходах:
Python3
# Program to show the time taken in # iteration and recursion time import # Recursive function to find factorial # of the given number N def factorial(N): # Base Case if N = = 0 : return 1 # Recursive Call return N * factorial(N - 1 ) # Driver Code if __name__ = = '__main__' : n = 20 # Find the time taken for the # recursive approach start = time.perf_counter() print ( "Calculated using recursion: " , factorial(n)) end = time.perf_counter() print ( "Time taken in recursion: " , "{0:.9f}" . format (end - start)) # Find time taken for iterative # approach start = time.perf_counter() result = 1 while n > 0 : result * = n n - = 1 print ( "Calculated using the iterative method: " , result) end = time.perf_counter() print ( "Time taken in iteration: " , "{0:.9f}" . format (end - start)) |
Выход:
Вычислено с использованием рекурсии: 2432902008176640000 Время, затраченное на рекурсию: 0,000015925 Рассчитано итерационным методом: 2432902008176640000 Время, затраченное на итерацию: 0,000009279