第一行输入两个整数
代表数组中的元素数量。
第二行输入
个整数
代表数组元素。
在一行上输出一个整数,代表切分方案数。
3 3 3 3
1
6 1 1 4 5 1 4
0
10 0 3 4 2 3 2 1 -1 3 4
2
import sys n=int(input()) nums=list(map(int,input().split())) start=100000 end=0 total=sum(nums) all_t=total//3 sum1=[] sum3=[] count=0 for i in range(n): if nums[i]>0: start=min(i,start) end=max(i,end) front=sum(nums[:start]) after=total-sum(nums[:start]) for i in range(start,end): front+=nums[i] after-=nums[i] if front==all_t: sum1.append(i) if after==all_t: sum3.append(i+1) for i in range(len(sum1)): for k in range(len(sum3)): if sum1[i]<sum3[k]-1: count+=1 print(count)z 找到第一个正数和最后一个正数的位置,刀砍在这两点之间。遍历一边前后的和,记录和为总体/3的位置,再比较位置,前+1(为第二个数组留空)小于后则计次+1.但是过不了第21组,输出会多10,很纳闷