สมมติว่า Amal และ Bimal กำลังเล่นเกมที่มีอาร์เรย์ A หนึ่งชุดพร้อมตัวเลข กฎของเกมมีดังนี้
- Bimal จะเริ่มเสมอ
- ในแต่ละเทิร์นผู้เล่นคนหนึ่งจะลบองค์ประกอบสูงสุดออกจากอาร์เรย์และองค์ประกอบอื่น ๆ ทั้งหมดที่อยู่ทางด้านขวาขององค์ประกอบที่ถูกลบจะถูกลบออกด้วย
- เล่นสลับกัน
- ผู้เล่นที่ลบองค์ประกอบที่เหลือทั้งหมดออก เขาจะชนะเกม
ดังนั้นหากอินพุตเป็นเหมือน nums =[5,2,6,3,4] ผลลัพธ์จะเป็น Amal เพราะในตอนแรก Bimal จะลบ [6,3,4] ดังนั้นอาร์เรย์จะเป็น [5,2] แล้วอามาลจะลบทั้งหมด ดังนั้นเขาจะเป็นผู้ชนะ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สูงสุด :=-1
- นับ :=0
- สำหรับแต่ละ a ใน nums ทำ
- ถ้า a> ค่าสูงสุดไม่ใช่ศูนย์ แล้ว
- นับ :=นับ + 1
- สูงสุด :=a
- ถ้า a> ค่าสูงสุดไม่ใช่ศูนย์ แล้ว
- ถ้าการนับ mod 2 เหมือนกับ 0 แล้ว
- ส่งคืน "Amal"
- ส่งคืน "Bimal"
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums): maximum = -1 count = 0 for a in nums: if a > maximum: count += 1 maximum = a if count % 2 == 0: return "Amal" return "Bimal" nums = [5,2,6,3,4] print(solve(nums))
อินพุต
[5,2,6,3,4]
ผลลัพธ์
Amal