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

โปรแกรมหาผู้ชนะเกมอาเรย์โดยใช้ Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า arr ซึ่งมีองค์ประกอบเฉพาะและเรามีค่าอื่นด้วย k ตอนนี้ให้พิจารณาเกมที่เรานำสององค์ประกอบแรกของอาร์เรย์ ในแต่ละเทิร์น เราเปรียบเทียบ arr[0] กับ arr[1] และค่าที่มากกว่าจะเป็นผู้ชนะและยังคงอยู่ที่ตำแหน่ง 0 และค่าที่น้อยกว่าจะย้ายไปที่ส่วนท้ายของอาร์เรย์ เกมนี้จะจบลงเมื่อค่าชนะ k รอบติดต่อกัน เราต้องหาผู้ชนะจากอาร์เรย์

ดังนั้น หากอินพุตเป็นเหมือน arr =[1,5,6,3,4,2] และ k =3 ผลลัพธ์จะเป็น 6 เพราะ

  • รอบที่ 1 arr =[1,5,6,3,4,2] ผู้ชนะ 5 นับชนะสำหรับ 5 คือ 1

  • รอบที่ 2 arr =[5,6,3,4,2,1] ผู้ชนะ 6 นับชนะสำหรับ 6 คือ 1

  • รอบที่ 3, arr =[6,3,4,2,1,5] ผู้ชนะ 6, นับชนะสำหรับ 6 คือ 2

  • รอบที่ 3, arr =[6,4,2,1,5,3] ผู้ชนะ 6, การนับชนะสำหรับ 6 คือ 3

ดังนั้นผู้ชนะคือ 6 เนื่องจากชนะสามครั้ง (k =3)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • l :=ขนาดของ arr

  • ก่อนหน้า :=arr[0]

  • นับ :=0

  • สำหรับฉันอยู่ในช่วง 1 ถึง l - 1 ทำ

    • ถ้าก่อนหน้า> arr[i] แล้ว

      • นับ :=นับ + 1

    • มิฉะนั้น

      • ก่อนหน้า :=arr[i]

      • นับ :=1

    • ถ้านับเท่ากับ k แล้ว

      • ย้อนกลับก่อนหน้า

  • ย้อนกลับก่อนหน้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

def solve(arr, k):
   l = len(arr)
   prev = arr[0]
   count = 0
   for i in range(1, l):
      if prev > arr[i]:
         count+=1
      else:
         prev = arr[i]
         count = 1
      if count == k:
         return prev
   return prev
arr = [1,5,6,3,4,2]
k = 3
print(solve(arr, k))

อินพุต

[1,5,6,3,4,2], 3

ผลลัพธ์

6