结构体排序
2026-06-27 14:08:22
发布于:湖北
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
// 商品结构体
struct Goods {
string name;
int price;
int v;
} g[1010];
// 排序规则:购买优先级从高到低
bool cmpBuy(Goods a, Goods b) {
if (a.v != b.v)return a.v < b.v; // v小优先
else if (a.price != b.price) return a.price < b.price; // 同v价格低优先
return a.name < b.name; // 同v同价名字字典小优先
}
//保存最后要输出的数组
string rst[1010];
int main() {
int M, N;
cin >> M >> N;
// 下标1开始存商品
for (int i = 1; i <= N; i++) cin >> g[i].name >> g[i].price >> g[i].v;
// 1~N商品排序
sort(g + 1, g + N + 1, cmpBuy);
int money = M;
// 按购买顺序挑选
int j = 1;//记录放入到rst数组里有几个值
for (int i = 1; i <= N; i++) {
if (money >= g[i].price) {
rst[j++] = g[i].name;
money -= g[i].price;
}
}
// 结果按字典序从小到大输出
sort(rst+1, rst+j);
for (int i=1;i<j;++i) {
cout << rst[i] << endl;
}
return 0;
}
这里空空如也


有帮助,赞一个