用C ++填充K杯所需的最少瓶子数量
问题陈述
给定N杯装有水的玻璃,并列出每个玻璃的容量。任务是找到可准确装满K杯所需的最少瓶子数。每个瓶子的容量为100个单位。
示例
如果N=5,K=4,则Capacity[]={1,2,3,2,1}。
用容量2、3、2填充玻璃杯需要8个单位。
这样一来,仅打开1瓶就足够了。
算法
要准确填写K眼镜,请以容量最小的K眼镜为准
所需的瓶子总数可以计算为-
(第1k杯容量之和)/(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