สมมติว่าในร้านรองเท้าไม่มีรองเท้าที่มีขนาดแตกต่างกันในอาร์เรย์ที่เรียกว่า size และรายการคู่อื่นสำหรับลูกค้า m ที่เรียกว่าความต้องการ โดยที่ demand[i] ประกอบด้วย (shoe_size, money) ดังนั้นลูกค้าที่มีความต้องการ i มี ความต้องการรองเท้าที่มีขนาดรองเท้า_ขนาดและเขา/เธอสามารถจ่ายเงินตามจำนวนที่กำหนดได้ เราต้องหาเงินที่เจ้าของร้านจะหาได้จากการขายรองเท้าเหล่านี้
ดังนั้นหากอินพุตเป็นเหมือนรองเท้า =[2,3,4,5,6,8,7,6,5,18] ความต้องการ =[(6,55), (6,45), (6,55) , (4,40), (18,60), (10,50)] จากนั้นผลลัพธ์จะเป็น 200 เพราะ
-
คนแรกจะซื้อรองเท้าขนาด 6 ในราคา 55
-
คนที่สองจะซื้อรองเท้าขนาด 6 ในราคา 45
-
ไม่มีรองเท้าที่มีขนาด 6 ในสต็อก
-
คนที่สี่จะซื้อรองเท้าขนาด 4 ในราคา 40
-
คนที่ห้าจะซื้อรองเท้าที่มีขนาด 18 ในราคา 60
-
ตัวที่หกจะไม่ได้รองเท้าเพราะไม่มีรองเท้าขนาด 10
รายได้ทั้งหมด 55 + 45 + 40 + 60 =200
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดความต้องการ
- ขนาด :=แผนที่ที่มีความถี่ของรองเท้าตามขนาด
- รับ :=0
- สำหรับฉันในช่วง 0 ถึง n - 1 ทำ
- (sz, ราคา) :=ดีมานด์[i]
- ถ้ารองเท้าที่มีขนาด sz มีขนาดอยู่แล้ว
- ขนาด[sz] :=ขนาด[sz] - 1
- รับ :=รับ + ราคา
- ผลตอบแทนที่ได้รับ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
จากคอลเลกชันที่นำเข้า Counterdef แก้ปัญหา (รองเท้า, ความต้องการ):n =len (ความต้องการ) ขนาด =เคาน์เตอร์ (รองเท้า) รับ =0 สำหรับฉันในช่วง (n):sz, ราคา =ความต้องการ [i] ถ้าขนาด[sz] :size[sz] -=1 earn +=price return earnshoes =[2,3,4,5,6,8,7,6,5,18]ดีมานด์ =[(6,55), (6,45) , (6,55), (4,40), (18,60), (10,50)]พิมพ์(แก้(รองเท้า,ความต้องการ))
อินพุต
<ก่อน>[2,3,4,5,6,8,7,6,5,18], [(6,55), (6,45), (6,55), (4,40), (18,60),(10,50)]ผลลัพธ์
200