Computer >> Máy Tính >  >> Lập trình >> Python

Đánh trùm bằng Python


Giả sử chúng ta có một danh sách nhị phân gọi là máy bay chiến đấu và một danh sách nhị phân khác được gọi là ông chủ. Trong danh sách máy bay chiến đấu, số 1 đại diện cho một máy bay chiến đấu. Tương tự, trong danh sách các ông chủ, 1 đại diện cho một ông chủ. Máy bay chiến đấu đó có thể đánh bại hàng của con trùm nếu nó chứa nhiều máy bay chiến đấu hơn con trùm. Chúng tôi phải trả lại một ma trận trùm mới với các hàng trùm bị đánh bại đã bị xóa.

Vì vậy, nếu đầu vào giống như máy bay chiến đấu =[0,1,1]

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

thì đầu ra sẽ là

0 1 1
1 1 1

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Fight_cnt:=tổng hợp của tất cả các yếu tố của máy bay chiến đấu

  • result:=một danh sách mới

  • đối với mỗi hàng trong các ông chủ, hãy thực hiện

    • nếu Fight_cnt <=tổng của mỗi phần tử trong hàng, thì

      • chèn hàng vào cuối kết quả

  • trả về kết quả

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class Solution:
   def solve(self, fighters, bosses):
      fighter_cnt = sum(fighters)
      result = []
      for row in bosses:
         if fighter_cnt <= sum(row):
            result.append(row)
      return result
ob = Solution()
fighters = [0, 1, 1]
bosses = [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]
print(ob.solve(fighters, bosses))

Đầu vào

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

Đầu ra

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