思路
for i 固定倒水次数
for j 遍历在当前倒水次数下,需要升级多少次桶
更新最少次数(倒水+升桶)
代码实现
int max(int a, int b) {
return a > b ? a : b;
}
int min(int a, int b) {
return a < b ? a : b;
}
int storeWater(int* bucket, int bucketSize, int* vat, int vatSize) {
int maxx = 0,i,j,t;
for (i = 0; i < vatSize; i++) {
maxx = max(maxx, vat[i]);
}
if (maxx == 0)return 0;
int res = 0x3f3f3f3f;
for (j = 1; j <= maxx && j < res; j++)
{
t = 0;
for (i = 0; i < bucketSize; ++i) {
t += max(0, (vat[i] + j - 1) / j - bucket[i]);
}
res = min(res, t + j);
}
return res;
}