สมมติว่าเรามีรายการตัวเลขที่เรียกว่าน้ำหนัก ซึ่งแสดงถึงน้ำหนักของประชาชน และขีดจำกัดของค่าจะกำหนดขีดจำกัดน้ำหนักของเรือจรวดหนึ่งลำ ตอนนี้จรวดแต่ละลำสามารถรองรับคนได้มากที่สุดสองคน เราต้องหาจำนวนขั้นต่ำของเรือจรวดที่จะช่วยทุกคนสู่โลกได้
ดังนั้นหากอินพุตเป็นเหมือนน้ำหนัก =[300, 400, 300] ขีด จำกัด =600 ดังนั้นเอาต์พุตจะเป็น 2 เนื่องจากต้องใช้เรือจรวดหนึ่งลำเพื่อนำคนสองคนที่มีน้ำหนักตัวละ 300 และอีกลำรับ ผู้ที่มีน้ำหนัก 400.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
จัดเรียงรายการน้ำหนัก
-
cnt :=0
-
ในขณะที่ตุ้มน้ำหนักไม่ว่างเปล่าให้ทำ
-
x :=ลบองค์ประกอบสุดท้ายออกจากน้ำหนัก
-
ถ้าน้ำหนักไม่ว่างเปล่าและ weights[0] <=จำกัด − x แล้ว
-
ลบองค์ประกอบแรกออกจากน้ำหนัก
-
-
cnt :=cnt + 1
-
-
ส่งคืน cnt
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง(Python)
class Solution: def solve(self, weights, limit): weights.sort() cnt = 0 while weights: x = weights.pop() if weights and weights[0] <= limit - x: weights.pop(0) cnt += 1 return cnt ob = Solution() weights = [300, 400, 300] limit = 600 print(ob.solve(weights, limit))
อินพุต
[300, 400, 300], 600
ผลลัพธ์
2