Viết chương trình Python tìm đoạn con có các số hạng dương liên tiếp có tổng lớn nhất. (Nếu có nhiều đoạn con thoả mãn thì đưa ra màn hình: Số đoạn con thoả mãn và các đoạn con đó).
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
ĐÁP ÁN
def find_max_subarray(arr):
max_sum = float('-inf')
max_subarrays = []
current_sum = 0
current_subarray = []
for num in arr:
if num > 0:
current_sum += num
current_subarray.append(num)
else:
if current_sum > max_sum:
max_sum = current_sum
max_subarrays = [current_subarray]
elif current_sum == max_sum:
max_subarrays.append(current_subarray)
current_sum = 0
current_subarray = []
if current_sum > max_sum:
max_sum = current_sum
max_subarrays = [current_subarray]
elif current_sum == max_sum:
max_subarrays.append(current_subarray)
return max_sum, max_subarrays
# Nhập mảng từ người dùng
arr = list(map(int, input("Nhập mảng các số nguyên, cách nhau bằng dấu cách: ").split()))
# Tìm đoạn con có tổng lớn nhất max_sum, max_subarrays = find_max_subarray(arr)
# In kết quả
print("Tổng lớn nhất của đoạn con có các số hạng dương liên tiếp là:", max_sum)
print("Số đoạn con thoả mãn:", len(max_subarrays))
print("Các đoạn con đó là:")
for subarray in max_subarrays:
print(subarray)
-------
#TranDuyManhTHCSLocThai
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
246
2603
123
Tui hong có sử dụng chat GPT Hỏi cho đã vô rồi người ta trả lời lại không tin?
246
2603
123
Hoangduy67: có học thức mà ăn với chả nói!
974
6588
531
TranDuyManhTHCSLocThai: Cho mình xin lỗi nếu mình có nói gì sai
974
6588
531
Do thấy bài của bạn giống ChatGPT quá thôi
527
6046
230
Bạn có gì chắc bạn không dùng
974
6588
531
Mình đã rồi mà xài ChatGPT cũng đâu có sao
527
6046
230
bị ban acc
974
6588
531
???