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

โปรแกรมหาจำนวนตำแหน่งที่ปลอดภัยเมื่อระเบิดระเบิดใน Python

สมมติว่าเรามีเมทริกซ์ไบนารี 2 มิติ โดย 1 แทนระเบิด 0 แทนเซลล์ว่าง เมื่อระเบิดระเบิด ทุกเซลล์ในแถวและคอลัมน์เดียวกันจะได้รับความเสียหาย หาจำนวนเซลล์ที่ยืนอยู่ได้ปลอดภัย (ไม่ได้รับความเสียหาย)

ตัวอย่าง

เมทริกซ์:

[[1, 1, 0],
 [0, 0, 0],
 [0, 0, 0]]

เอาต์พุต: 2

เซลล์ปลอดภัยคือ (1,2) และ (2,2) (ดัชน์เริ่มจาก 0)

ขั้นตอนการแก้ปัญหา

  1. สร้างอาร์เรย์ r ขนาดจำนวนแถว และ c ขนาดจำนวนคอลัมน์ เริ่มต้น False
  2. วนลูปผ่านเมทริกซ์ ถ้า matrix[i][j] == 1 ตั้ง r[i] = True, c[j] = True
  3. นับ ct = จำนวนเซลล์ที่ r[i] == False and c[j] == False
  4. คืนค่า ct

การนำไปใช้ใน Python

class Solution:
    def solve(self, matrix):
        r = [False for i in range(len(matrix))]
        c = [False for i in range(len(matrix[0]))]
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 1:
                    r[i] = True
                    c[j] = True
        ct = 0
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if r[i] == False and c[j] == False:
                    ct += 1
        return ct

ob = Solution()
matrix = [
    [1, 1, 0],
    [0, 0, 0],
    [0, 0, 0]
]
print(ob.solve(matrix))

อินพุต

[[1, 1, 0], [0, 0, 0], [0, 0, 0]]

เอาต์พุต

2