[C++] [leetcode] [sort]
卡车上的最大单元数,类似简易背包问题
class Solution {
private:
static bool cmp(vector<int> a,vector<int> b)
{
return a[1]>b[1];
}
public:
int maximumUnits(vector<vector<int>>& boxTypes, int truckSize)
{
int result = 0;
int i = 0;
//按第二列排序
sort(boxTypes.begin(), boxTypes.end(), cmp);
while(truckSize>0 && i<boxTypes.size())
{
int min = truckSize>=boxTypes[i][0]?boxTypes[i][0]:truckSize;
result += min*boxTypes[i][1];
truckSize -= min;
++i;
}
return result;
}
};
方法:先按单位数对输入进行降序排序,再依次取得箱子。
sort函数 包含在algorithm头文件中
1.在数组中调用时
int A[4] = {1,2,4,3};
sort(A,A+4,cmp);
2.在vector中调用时
一维:vector<int> a;
二维:vector< vector<int> > a;
sort(a.begin(), a.end(), cmp);
cmp是比较函数,可以自定义;也可以省略,默认是升序。
注意:在自定义cmp函数时,必须定义为静态函数,否则报错。