由于每个箱子占地大小一致,所以简单贪心就好,局部最优既是全局最优。
思路:将箱子数组按照所能容纳单元排序,再遍历即可
class Solution {
public:
static bool cmp(const vector<int>& box1, const vector<int>& box2) {
return box1[1] > box2[1];
}
int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
sort(boxTypes.begin(), boxTypes.end(), cmp);
int maximumUnitsCount = 0;
for (auto & boxType : boxTypes) {
if (boxType[0U] > truckSize) {
maximumUnitsCount += truckSize * boxType[1U];
break;
} else {
maximumUnitsCount += boxType[0U] * boxType[1U];
}
truckSize -= boxType[0U];
}
return maximumUnitsCount;
}
};