小红有一个长度为 的数组 ,她打算将数组切两刀变成三个非空子数组,使得每一个子数组中至少存在一个正数,且每个子数组的和都相等。 看起来不是很难,所以小红想让你求解,一共有多少种不同的切分方案。
区块链毕设网qklbishe.com为您提供问题的解答
小红有一个长度为
的数组
,她打算将数组切两刀变成三个非空子数组,使得每一个子数组中至少存在一个正数,且每个子数组的和都相等。
看起来不是很难,所以小红想让你求解,一共有多少种不同的切分方案。
num = int(input()) num_list = input().split(" ") num_list = [int(item) for item in num_list] obj = sum(num_list) / 3 if not obj == int(obj): print(0) exit(0) sum_prefix = [0] * num count_prefix = [0] * num loc_dic = {"m": [], "2m": []} temp = 0 count = 0 for i in range(0, num): if num_list[i] > 0: count += 1 temp = temp + num_list[i] sum_prefix[i] = temp count_prefix[i] = count if temp == obj: loc_dic["m"].append(i) if temp == 2 * obj: loc_dic["2m"].append(i) res = 0 for L in loc_dic["m"]: for R in loc_dic["2m"]: if L < R and count_prefix[R] - count_prefix[L] > 0: res += 1 print(res)
最后一个过不了, 超时了
39:32
以上就是关于问题小红有一个长度为 的数组 ,她打算将数组切两刀变成三个非空子数组,使得每一个子数组中至少存在一个正数,且每个子数组的和都相等。
看起来不是很难,所以小红想让你求解,一共有多少种不同的切分方案。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训