คำชี้แจงปัญหา
กำหนดขนาดอาร์เรย์ N แทนบัคเก็ต ดัชนีอาร์เรย์แต่ละรายการประกอบด้วยรายการ ให้ K ทัวร์ภายในซึ่งรายการทั้งหมดจะต้องจัดส่ง อนุญาตให้นำสิ่งของจากถังเดียวใน 1 ทัวร์ งานคือการบอกจำนวนขั้นต่ำของสินค้าที่ต้องจัดส่งต่อทัวร์ เพื่อให้สามารถจัดส่งรายการทั้งหมดภายใน K ทัวร์
หากมี 5 ถังพร้อมไอเทม ={1, 3, 5, 7, 9} และ 10 ทัวร์ เราก็สามารถจัดส่งได้ 3 รายการต่อทัวร์ โดยส่งครั้งละ 3 รายการ
-
ขนาดถังที่ 1 คือ 1 ดังนั้นจำนวนทัวร์ที่ต้องการ =1
-
ขนาดถังที่ 2 คือ 3 ดังนั้นจำนวนทัวร์ที่ต้องการ =1
-
ถังที่ 3 ขนาด 5 ดังนั้นจำนวนทัวร์ที่ต้องการ =2 (3 + 2 รายการต่อทัวร์)
-
ขนาดถังที่ 4 คือ 7 ดังนั้นจำนวนทัวร์ที่ต้องการ =3 (3 + 3 + 1 รายการต่อทัวร์)
-
ขนาดถังที่ 5 คือ 9 ดังนั้นจำนวนทัวร์ที่ต้องการ =3 (3 + 3 + 3 รายการต่อทัวร์)
จำนวนทัวร์ทั้งหมด =10
อัลกอริทึม
<ก่อน>1. ค้นหาจำนวนขั้นต่ำของรายการที่จะแจกจ่ายต่อการจัดส่ง2. วนซ้ำจาก 1 เป็นมูลค่าสูงสุดของสินค้าในที่เก็บข้อมูล และคำนวณจำนวนทัวร์ที่จำเป็นสำหรับแต่ละที่เก็บข้อมูล และหาจำนวนทัวร์ทั้งหมดสำหรับการจัดส่งที่สมบูรณ์3 ค่าดังกล่าวครั้งแรกที่มีทัวร์น้อยกว่าหรือเท่ากับ K ให้จำนวนที่ต้องการตัวอย่าง
#include#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) โดยใช้เนมสเปซ std;int minItemsDelivered(int *arr, int n, int k) { int maxElement =INT_MIN; สำหรับ (int i =0; i ผลลัพธ์
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -
รายการขั้นต่ำที่จะจัดส่ง =3