用C ++填充K杯所需的最少瓶子数量

问题陈述

给定N杯装有水的玻璃,并列出每个玻璃的容量。任务是找到可准确装满K杯所需的最少瓶子数。每个瓶子的容量为100个单位。

示例

如果N = 5,K = 4,则Capacity [] = {1,2,3,2,1}。

  • 用容量2、3、2填充玻璃杯需要8个单位。

  • 这样一来,仅打开1瓶就足够了。

算法

  • 要准确填写K眼镜,请以容量最小的K眼镜为准

  • 所需的瓶子总数可以计算为-

    (第1 k杯容量之和)/(1瓶容量)的Ceil值。

示例

#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