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

โปรแกรมหาจำนวนแฝดที่ดีใน Python


สมมติว่าเรามีจำนวนอาร์เรย์ และจำนวนเต็มที่แตกต่างกันสามตัว a, b และ c เราต้องหาจำนวนแฝดสามตัวที่ดี แฝดสาม (nums[i], nums[j], nums[k]) ถือเป็นแฝดที่ดี หากเงื่อนไขต่อไปนี้เป็นจริง -

  • 0 <=i

  • |nums[i] - nums[j]| <=ก

  • |nums[j] - nums[k]| <=b

  • |nums[i] - nums[k]| <=ค

เราต้องนับจำนวนแฝดที่ดี

ดังนั้น หากอินพุตเป็น nums=[5,2,3,3,12,9], a =7, b =2, c =3 ผลลัพธ์จะเป็น 4 เพราะแฝดสามที่ดีคือ [(5, 2,3), (5,2,3), (5,3,3), (2,3,3)]

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

  • res :=0

  • สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ

    • สำหรับ j ในช่วง i+1 ถึงขนาดของ nums - 1 ทำ

      • สำหรับ k ในช่วง j+1 ถึงขนาดของ nums - 1 ทำ

        • ถ้า |nums[i] - nums[j]| <=และ |nums[j] - nums[k]| <=b และ |nums[i] - nums[k]| <=ค แล้ว

          • res :=res + 1

  • ผลตอบแทน

ตัวอย่าง (Python)

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

def solve(nums, a, b, c):
   res = 0
   for i in range(len(nums)):
      for j in range(i+1, len(nums)):
         for k in range(j+1, len(nums)):
            if abs(nums[i] - nums[j]) <= a and abs(nums[j] - nums[k]) <= b and abs(nums[i] - nums[k]) <= c:
               res += 1
   return res

nums= [5,2,3,3,12,9]
a = 7
b = 2
c = 3
print(solve(nums, a, b, c))

อินพุต

[5,2,3,3,12,9], 7, 2 3

ผลลัพธ์

4