題目有點長,耐心點看。
思路:對每棵樹,有一個總數記錄,有一個狀態記錄(是否發生蘋果掉落),所以,total列表用來記錄所有蘋果樹的蘋果總數,isdrop記錄所有樹的狀態
在輸入每棵樹的數據時,對於a_ij進行判斷,小於等於0進行更新total列表,否則,就和total中的當前項進行比較,大於最新數據表示存在掉落情況,對應的isdrop更新爲True,並且對total的當前項進行賦值操作
對於相鄰連續三棵,用類似於(x+1)%n的形式解決,主要注意x的循環範圍,要覆蓋所有情況,長度一定是等於n地。
(100)
total=list() n=eval(input()) isdrop=[False]*n#True表示有蘋果掉落,False表示沒有蘋果掉落 for i in range(n): line=[int(it) for it in input().rstrip().split()] total.append(line[1]) for j in range(2,line[0]+1): if line[j]<=0: total[i]+=line[j] else: if total[i]>line[j]: isdrop[i]=True total[i]=line[j] e=0 for k in range(2,n+2):#對於是個圈的循環,要注意range裏的長度還是要等於n,否則循環會少 if isdrop[(k-1)%n] and isdrop[(k-2)%n] and isdrop[k%n]: e+=1 print(str(sum(total))+' '+str(isdrop.count(True))+' '+str(e))