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

จำนวนขวดขั้นต่ำที่ต้องเติม K แก้วใน C++


คำชี้แจงปัญหา

ให้ N แก้วที่มีน้ำและรายการของความสามารถของพวกเขาแต่ละคน ภารกิจคือการหาจำนวนขวดขั้นต่ำที่จำเป็นในการกรอกแก้ว K ให้ถูกต้อง ความจุของแต่ละขวดคือ 100 หน่วย

ตัวอย่าง

ถ้า N =5, K =4, ความจุ[] ={1, 2, 3, 2, 1}.

  • การเติมแก้วที่มีความจุ 2, 3, 2 ต้องใช้ 8 ชิ้น
  • ทางนี้เปิดแค่ 1 ขวดก็พอ

อัลกอริทึม

  • ในการกรอกแว่นตา K ให้ใส่แว่นตา K ที่มีความจุน้อยที่สุด
  • ขวดที่ต้องการทั้งหมดสามารถคำนวณได้ดังนี้ -

    ค่าเพดานของ (ผลรวมของความจุของแก้วที่ 1 k) / (ความจุ 1 ขวด)

ตัวอย่าง

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int minBottles(int *capacity, int n, int k) {
   sort(capacity, capacity + n);
   int sum = 0;
   for (int i = 0; i < k; ++i) {
      sum += capacity[i];
   }
   return ceil((double)sum/100);
}
int main() {
   int capacity[] = {1, 2, 3, 2, 1};
   cout << "Min bottles required = " <<minBottles(capacity, 5, 4) << endl;
   return 0;
}

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -

Min bottles required = 1