Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาจำนวนผู้ชมที่ยืนในสนามกีฬาที่เวลา t ใน Python

Mexican Wave: จำนวนผู้ชมยืนที่เวลา t

มีผู้ชม n คน หมายเลข 1..n กระบวนการ:

  • เวลา 1..k: คนที่ i ยืน
  • เวลา k+1..n: คนที่ i ยืน, คนที่ i-k นั่ง
  • เวลา n+1..n+k: คนที่ i-n+k นั่ง
หาจำนวนคนยืนที่เวลา t

สูตรตรง (O(1))


if t <= k:       return t
elif t <= n:     return k
else:            return k - (t - n)

โค้ดตัวอย่าง Python


def how_many_stand(n, k, t):
    if t <= k:
        return t
    elif t <= n:
        return k
    else:
        return k - (t - n)

print(how_many_stand(11, 6, 4))  # 4