สมมติว่า มีเมทริกซ์ 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 เหมือนกับ 0 แล้ว
- ผลตอบแทน(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