Created
February 8, 2023 07:41
-
-
Save Denenberg/13d3b48360af8d525aadc05a788aae1a to your computer and use it in GitHub Desktop.
Как вариант, вот алгоритм для поиска возрастающей подследовательности максимальной длины в списке:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Как вариант, вот алгоритм для поиска возрастающей | |
# подследовательности максимальной длины в списке: | |
# Здесь используется динамическое программирование. | |
# Массив dp хранит длины возрастающих подследовательностей, | |
# заканчивающихся на текущем элементе. | |
# Для каждой пары элементов numbers[i] и numbers[j] сравнивается, | |
# является ли numbers[j] предшественником numbers[i] | |
# в возрастающей подследовательности. Если numbers[j] < numbers[i], | |
# то dp[i] обновляется с учетом длины возрастающей | |
# подследовательности, заканчивающейся на j. | |
def longest_increasing_subsequence(numbers): | |
n = len(numbers) | |
dp = [1] * n | |
for i in range(1, n): | |
for j in range(i): | |
if numbers[j] < numbers[i]: | |
dp[i] = max(dp[i], dp[j] + 1) | |
return max(dp) | |
numbers = [10, 22, 9, 33, 21, 50, 41, 60, 80] | |
result = longest_increasing_subsequence(numbers) | |
print("The length of the longest increasing subsequence is:", result) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment