试题
代码
# N表示苹果树的棵树
N = int(input())
T, D, E = 0, 0, 0
# 所有树剩果总数
# 发生苹果掉落的苹果树总数
# 相邻三棵树发生苹果掉落的组数
treeMatrix = [] # 存放所有数的数果疏果信息
for i in range(N):treeRow = list(map(int, input().split()))treeRow = treeRow[1:]treeEach = treeRow[0] # 存放每棵苹果树当前果数# 对每一棵树的数果疏果情况进行遍历for i in range(1, len(treeRow)):# 如果小于等于0,说明为疏果操作,直接加if treeRow[i] <= 0:treeEach += treeRow[i]# 如果大于0,说明为数果操作,如果此时数得的数量大于之前统计数量,说明果子掉落,在列表结尾加'True'标志elif treeEach > treeRow[i]:# 判断之前是否已经有果子掉落if treeRow[-1] != 'True':treeRow.append('True')D += 1treeEach = treeRow[i]# 如果为数果操作,且如果此时数得的数量等于之前统计数量,treeEach保持不变,无需操作T += treeEachtreeMatrix.append(treeRow)
# 计算组数Efor i in range(len(treeMatrix)):before, after = i-1, i+1 # 存放前后两棵树的掉落情况# 这棵树是第一棵树,前一棵树就是最后一棵if before < 0:before += len(treeMatrix)# 这棵树是最后一棵树,前一棵树就是第一棵if after > len(treeMatrix)-1:after -= len(treeMatrix)if treeMatrix[before][-1] == treeMatrix[i][-1] == treeMatrix[after][-1] == 'True':E += 1print(T, D, E)