สมมติว่า 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