用 C++ 填充 K 個杯子所需的最小瓶數
問題陳述
給定 N 個盛有水的杯子,以及每個杯子的容量列表。任務是找到填充正好 K 個杯子所需的最小瓶數。每瓶的容量為 100 個單位。
示例
如果 N = 5,K = 4,capacity[] = {1, 2, 3, 2, 1}。
- 填充容量為 2、3、2 的杯子需要 8 個單位。
- 這樣,只需開啟 1 瓶就足夠了。
演算法
- 要填充正好 K 個杯子,請取容量最小的 K 個杯子
所需瓶總數可計算為 -
(前 k 個杯子容量之和)/(每瓶容量)的上限值。
示例
#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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP