题目
思路
- 被毁掉的墙段一定只与一段还未被毁掉的墙面相邻
- 只能从两头坏,因为如果从中间坏的话,毁掉的墙就和两段未被毁掉的墙面相邻了,画了的墙是坏不了的,只能坏没有画的墙
- 结果为n/2 向上取整,求取总和最大值
代码
T = int(input())
for case in range(1,T+1):
N=int (input())
str_input=input().strip() # 读入字符串,去掉收尾空格
s=[0]*(N+5)
for i in range(1,N+1):
s[i]=s[i-1]+int(str_input[i-1]) # 下标从零开始
mid=(N+1)//2 # 分奇偶两种情况,上取整
res=0
for i in range(mid,N+1):
res=max(res,s[i]-s[i-mid]) # 符合条件的前缀和最大值
print("Case #{}: {}".format(case,res))