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

Số lượng các cặp Domino tương đương trong Python

Giả sử chúng ta có một danh sách các dominos. Mỗi quân domino có hai số. Hai dominos D [i] =[a, b] và D [j] =[c, d] sẽ giống nhau nếu a =c và b =d, hoặc a =d và b =c. Vì vậy, một domino có thể được đảo ngược. Chúng ta phải trả về số cặp (i, j) mà 0 <=i

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

  • hãy để câu trả lời =0
  • cho mỗi cặp p trong danh sách dominos -
    • sắp xếp cặp p
    • Sau đó, lưu trữ tần số của mỗi quân cờ domino thành D
  • cho b trong các giá trị trong D -
    • answer:=answer + (b * (b - 1)) / 2
  • trả lời câu trả lời

Ví dụ

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

class Solution(object):
   def numEquivDominoPairs(self, dominoes):
      d = {}
      ans = 0
      for i in dominoes:
         i.sort()
         i = tuple(i)
         if i not in d:
            d[i]= 1
         else:
            d[i]+=1
      for b in d.values():
         ans += ((b*(b-1))//2)
      return ans
ob1 = Solution()
print(ob1.numEquivDominoPairs([[1,2],[2,1],[3,4],[5,6], [4,3]]))

Đầu vào

[[1,2],[2,1],[3,4],[5,6],[4,3]]

Đầu ra

2