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

โปรแกรมค้นหาเซลล์ที่มีค่าสูงสุดในเมทริกซ์ใน Python


สมมติว่า มีเมทริกซ์ n x n เริ่มต้นด้วย 0s ตอนนี้ รายชื่อจะได้รับและประกอบด้วยคู่บางคู่ที่มีตำแหน่งเฉพาะแถวและคอลัมน์ สำหรับแต่ละรายการ i ในรายการ เนื้อหาของเซลล์จะเพิ่มขึ้น 1 โดยที่หมายเลขแถวและหมายเลขคอลัมน์จะน้อยกว่าค่าแถวและค่าคอลัมน์ของรายการ i ในรายการ หลังจากที่ผ่านองค์ประกอบรายการทั้งหมดแล้ว เราต้องหาจำนวนเซลล์ในเมทริกซ์ที่มีค่าสูงสุด (ดัชนีแถวและคอลัมน์เริ่มต้นที่ 0)

ดังนั้น ถ้าอินพุตเป็นเหมือน input_list =[[3, 5], [4, 6], [5, 3]] ผลลัพธ์จะเป็น 9. สมมุติว่ามันเป็นเมทริกซ์ขนาด 5 x 6 ตอนแรกค่าในเมทริกซ์คือ

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

หลังจากผ่านองค์ประกอบแรกของรายการแล้ว จะกลายเป็น −

1 1 1 1 1 0
1 1 1 1 1 0
1 1 1 1 1 0
0 0 0 0 0 0
0 0 0 0 0 0

หลังจากผ่านองค์ประกอบที่สองของรายการแล้ว จะกลายเป็น −

2 2 2 2 2 1
2 2 2 2 2 1
2 2 2 2 2 1
1 1 1 1 1 1
0 0 0 0 0 0

หลังจากผ่านองค์ประกอบที่สามของรายการแล้ว จะกลายเป็น −

3 3 3 2 2 1
3 3 3 2 2 1
3 3 3 2 2 1
2 2 2 1 1 1
1 1 1 0 0 0

ค่าสูงสุดในเมทริกซ์คือ 3 และมี 9 เซลล์ที่มีค่าดังกล่าว

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

  • xpos :=0
  • ypos :=0
  • สำหรับแต่ละรายการใน input_list ให้ทำ
    • ถ้า xpos เหมือนกับ 0 แล้ว
      • xpos :=รายการ[0]
      • ypos :=รายการ [1]
    • มิฉะนั้น
      • xpos :=ขั้นต่ำของ (xpos, item[0])
      • ypos :=ขั้นต่ำของ (ypos, item[1])
  • ผลตอบแทน(xpos * ypos)

ตัวอย่าง

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

def solve(input_list):
   xpos = 0
   ypos = 0
   for item in input_list:
      if xpos == 0:
         xpos = item[0]
         ypos = item[1]
      else:
         xpos = min(xpos,item[0])
         ypos = min(ypos,item[1])
   return (xpos * ypos)

print(solve([[3, 5], [4, 6], [5, 3]]))

อินพุต

[[3, 5], [4, 6], [5, 3]]

ผลลัพธ์

9