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

โปรแกรมหาจำนวนอิฐขั้นต่ำที่จำเป็นในการสร้างหอคอย k ที่มีความสูงเท่ากันใน Python


สมมติว่าเรามีรายการความสูงของหอคอย และค่าบวก k เราต้องการเลือก k ทาวเวอร์ และทำให้สูงเท่ากันโดยเพิ่มอิฐมากขึ้น แต่ใช้อิฐให้น้อยที่สุด เราต้องหาจำนวนอิฐขั้นต่ำที่จำเป็นในการเลือก k ทาวเวอร์ และทำให้สูงเท่ากัน

ดังนั้นหากอินพุตเท่ากับความสูง =[4, 7, 31, 14, 40] k =3 แล้วผลลัพธ์จะเป็น 17 เนื่องจากเราสามารถเลือก 5, 8 และ 15 ซึ่งต้องใช้อิฐ 17 ก้อนเพื่อให้ได้ความสูงเท่ากัน .

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

  • จัดเรียงความสูงของรายการ
  • แทน :=อินฟินิตี้
  • s :=0
  • สำหรับแต่ละดัชนี i และค่า x ในความสูง ทำ
    • s :=s + x
    • ถ้าฉัน>=k แล้ว
      • s :=s - ความสูง[i - k]
    • ถ้าฉัน>=k - 1 แล้ว
      • ans :=ขั้นต่ำของ ans และ (x * k - s)
  • คืนสินค้า

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

ตัวอย่าง

class Solution:
   def solve(self, heights, k): heights.sort()
      ans = float("inf")
      s = 0
      for i, x in enumerate(heights):
         s += x
         if i >= k:
            s -= heights[i - k]
         if i >= k - 1:
            ans = min(ans, x * k - s)
      return ans
ob = Solution()
heights = [5, 8, 32, 15, 41]
k = 3
print(ob.solve(heights, k))

อินพุต

[5, 8, 32, 15, 41], 3

ผลลัพธ์

17