def max_subsequence_groups(arr):
"""
找到滿足條件的最多連續子序列數目
:param arr: 輸入的數組
:return: 滿足條件的最多連續子序列數目
"""
n = len(arr)
prefix_sum = [0] * (n + 1) # 前綴和數組
sum_indices = {} # 記錄每個和對應的索引列表
# 計算前綴和
for i in range(n):
prefix_sum[i + 1] = prefix_sum[i] + arr[i]
# 遍歷所有可能的子序列
max_count = 0
for i in range(n):
for j in range(i + 1, n + 1):
current_sum = prefix_sum[j] - prefix_sum[i] # 當前子序列的和
if current_sum not in sum_indices:
sum_indices[current_sum] = []
# 檢查當前子序列是否與之前的子序列不相交
if not sum_indices[current_sum] or i >= sum_indices[current_sum][-1][1]:
sum_indices[current_sum].append((i, j - 1)) # 記錄子序列的起始和結束索引
# 更新最大數目
if len(sum_indices[current_sum]) > max_count:
max_count = len(sum_indices[current_sum])
return max_count
def main():
# 輸入數組長度
n = int(input("請輸入數組長度: "))
# 輸入數組
arr = list(map(int, input("請輸入數組元素(用空格分隔): ").split()))
if len(arr) != n:
raise ValueError("數組長度與輸入的長度不一致!")
# 計算滿足條件的最多連續子序列數目
result = max_subsequence_groups(arr)
# 輸出結果
print(f"滿足條件的最多連續子序列數目為: {result}")
# 運行主程序
if __name__ == "__main__":
main()