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

โปรแกรมหาเมทริกซ์ความสูงของคอนโดมิเนียมแต่ละห้องเพิ่มขึ้นจนสุดใน Python?


สมมติว่าเรามีเมทริกซ์ 2 มิติ โดยที่เมทริกซ์ [r, c] แทนความสูงของคอนโดมิเนียมในเมือง มองเห็นเส้นขอบฟ้าตะวันตก-ตะวันออกโดยใช้ค่าสูงสุดของแต่ละแถวในเมทริกซ์ และสามารถมองเห็นเส้นขอบฟ้าเหนือ-ใต้ได้โดยใช้ค่าสูงสุดของแต่ละคอลัมน์ เราต้องหาเมทริกซ์ใหม่ที่เพิ่มความสูงของคอนโดมิเนียมแต่ละห้องให้สูงที่สุดเท่าที่เป็นไปได้ โดยที่ยังคงเส้นขอบฟ้าตะวันตก-ตะวันออกและเหนือ-ใต้ไว้เหมือนเดิม

ดังนั้นหากอินพุตเป็นแบบ

2 3 4
5 6 7
8 9 10


4 4 4
7 7 7
8 9 10

เนื่องจากเส้นขอบฟ้าทิศตะวันตก-ตะวันออกคือ [4, 7, 10] และเส้นขอบฟ้าเหนือ-ใต้คือ [8, 9, 10] เราสามารถเพิ่มทุกอย่างในแถวแรกให้มีค่า 4 และทุกอย่างในแถวที่สองให้มีค่า 7 โดยไม่ต้องเปลี่ยนเส้นขอบฟ้า

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

  • r :=รายการสูงสุดของแต่ละแถวในเมทริกซ์

  • c :=รายการสูงสุดของแต่ละคอลัมน์ในเมทริกซ์

  • สำหรับฉันในช่วง 0 ถึงจำนวนแถวของเมทริกซ์ ทำ

    • สำหรับ j ในช่วง 0 ถึงจำนวนคอลัมน์ของเมทริกซ์ ให้ทำ

      • ถ้า r[i]

        • เมทริกซ์[i, j] :=r[i]

      • มิฉะนั้น

        • เมทริกซ์[i, j] :=c[j]

  • ส่งคืนเมทริกซ์

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

ตัวอย่าง

class Solution:
   def solve(self, matrix):
      r = [max(i) for i in matrix]
      c = [max(i) for i in zip(*matrix)]
      for i in range(len(matrix)):
         for j in range(len(matrix[i])):
            if r[i] < c[j]:
               matrix[i][j] = r[i]
            else:
               matrix[i][j] = c[j]
      return matrix

ob = Solution()
matrix = [
   [2, 3, 4],
   [5, 6, 7],
   [8, 9, 10]
]
print(ob.solve(matrix))

อินพุต

[[2, 3, 4],
[5, 6, 7],
[8, 9, 10]]

ผลลัพธ์

[[4, 4, 4], [7, 7, 7], [8, 9, 10]]