如提,目前跑完所有資料就是會有特定幾筆答案不對可是我實在看不出來我的思路還是程式打錯了想來請教思路邏輯:先從第一層開始 每次倒水進來時看是否裝滿並更新最高高度,隨時更新剩下高度滿了就往下一層去 以此類推(若第二層也滿了就跳出a = input()s = list(map(int,input().split()))d = list(map(int,input().split()))
maxs = 0s = [s[0]**2,s[1]**2,s[2],s[3]]#底面積,剩餘高度
for i in d:#print(i,s,'999')rams = 0#暫時存此次進來的高度if s[2]:#第一層還沒裝滿ram = i/s[0]#可以裝滿的第一層高度if ram >s[2]:i = (ram-s[2]) *s[0]#剩下的要到第二層去了rams = s[2]s[2] = 0else:s[2] -= ramif ram >maxs:maxs = ram#更新最高高度continue#print(i,rams)#底下是第一層已經裝滿ram = i/s[1]#可以裝滿的第二層高度if ram >s[3]:#滿出來了if s[3] >maxs:maxs = s[3]breakelse:s[3] -= ramrams +=ramif rams >maxs:maxs = rams#更新最高高度#print(rams,s,"444")
print(int(maxs))
if s[3]>maxs:maxs=s[3]
應改為if s[3]>maxs:maxs=rams+s[3]
有可能超過第一杯時也超過第二杯