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()