c++ - 无法对向量进行排序>
问题描述
我尝试vector<pair<int, int>>
使用带有我自己的布尔函数的 STL 排序来对 a 进行排序。
#include <bits/stdc++.h>
using namespace std;
bool comp(pair<int, int> u1, pair<int, int> u2){
if(u1.first != u2.first) return u1.first < u2.first;
return u2.second > u2.second;
}
int main(void){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int univs, day, pay, max_income = 0, spent = 0;
vector<pair<int, int>> day_pay;
cin >> univs;
for(int u = 0; u < univs; u++){
cin >> pay >> day;
day_pay.push_back(make_pair(day, pay));
}
for(int i = 0; i < univs; i++) cout << day_pay[i].first << " " << day_pay[i].second << endl;
cout << endl;
sort(day_pay.begin(), day_pay.end(), comp);
for(int i = 0; i < univs; i++) cout << day_pay[i].first << " " << day_pay[i].second << endl;
for(int u = 0; u < univs; u++){
if(day_pay[u].first <= spent) continue;
max_income += day_pay[u].second;
spent++;
}
cout << max_income;
}
这是测试用例:
4
50 2
10 1
20 2
30 1
我想将此案例排序为
30 1
10 1
50 2
20 2
我应该怎么做才能解决这个问题?
解决方案
看看你的comp函数。if 后面的行:
return u2.second > u2.second;
不应该是:
return u1.second > u2.second
推荐阅读
- php - 使用 multipart/form-data POST 请求时从 ConnectWise API 获得无效响应
- r - 如何从字符串列表中创建对出现的二元关系矩阵?
- graph - 首次访问的节点形成一棵在 BFS 和 DFS 中具有相同边数的生成树
- symfony - 无法使用 SMTP 服务器使用 symfony 和 swiftmailer 发送电子邮件
- r - R:日期向量中的日期是什么:日期还是数值?(x[i] 和 i 之间的差异)
- sql - SQL Server - 使用 STRING_SPLIT 函数拆分多行?
- 3d - 如何去除 PCL 中的异常点以进行基于区域增长的表面检测
- ios - 重定向到 /login 后如何再次登录而没有任何 http 错误
- ios - 如何调试 Ionic iOS 滑动手势问题
- objective-c - 无法为文本赋值