Create maximum_subsequence.py (#7811)

This commit is contained in:
Pronoy Mandal 2023-05-11 00:30:59 +05:30 committed by GitHub
parent 6939538a41
commit 793e564e1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 0 deletions

View File

@ -716,6 +716,7 @@
* [Lru Cache](other/lru_cache.py)
* [Magicdiamondpattern](other/magicdiamondpattern.py)
* [Maximum Subarray](other/maximum_subarray.py)
* [Maximum Subsequence](other/maximum_subsequence.py)
* [Nested Brackets](other/nested_brackets.py)
* [Password](other/password.py)
* [Quine](other/quine.py)

View File

@ -0,0 +1,42 @@
from collections.abc import Sequence
def max_subsequence_sum(nums: Sequence[int] | None = None) -> int:
"""Return the maximum possible sum amongst all non - empty subsequences.
Raises:
ValueError: when nums is empty.
>>> max_subsequence_sum([1,2,3,4,-2])
10
>>> max_subsequence_sum([-2, -3, -1, -4, -6])
-1
>>> max_subsequence_sum([])
Traceback (most recent call last):
. . .
ValueError: Input sequence should not be empty
>>> max_subsequence_sum()
Traceback (most recent call last):
. . .
ValueError: Input sequence should not be empty
"""
if nums is None or not nums:
raise ValueError("Input sequence should not be empty")
ans = nums[0]
for i in range(1, len(nums)):
num = nums[i]
ans = max(ans, ans + num, num)
return ans
if __name__ == "__main__":
import doctest
doctest.testmod()
# Try on a sample input from the user
n = int(input("Enter number of elements : ").strip())
array = list(map(int, input("\nEnter the numbers : ").strip().split()))[:n]
print(max_subsequence_sum(array))