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

โปรแกรมหาจำนวนเหรียญสูงสุดที่ผู้เล่น 1 ได้ในเกม 3 กอง ด้วย Python

เกม 3 คน: เลือก 3 กอง P2 เลือกมากสุด P1 เลือกอันดับ 2 P3 เลือกน้อยสุด กลยุทธ์ optimal: เรียง piles จากน้อยไปมาก P1 ควรหยิบอันดับ 2 จากท้าย (index -2) ทุกครั้ง ลบ 3 กองทีละรอบ (มากสุด, อันดับ 2, น้อยสุด) รวมค่าที่ P1 หยิบ

ขั้นตอนการทำงาน

  1. เรียง piles จากน้อยไปมาก
  2. วนลูปจน piles ว่าง: เพิ่ม piles[-2] เข้า ans, ลบ piles[-2], piles[-1], piles[0]
  3. คืน ans

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


def solve(piles):
    piles.sort()
    ans = 0
    while piles:
        ans += piles[-2]
        del piles[-2]
        del piles[-1]
        del piles[0]
    return ans

piles = [2, 4, 1, 2, 7, 8]
print(solve(piles))  # Output: 9

อินพุต/เอาต์พุต

Input: [2,4,1,2,7,8]
Output: 9

รอบ1: เลือก (2,7,8) -> P1 ได้ 7, รอบ2: เลือก (1,2,4) -> P1 ได้ 2, รวม 9