

注解
1、结构体排序。注意perprice,每天的价格,必须是double类型。
2、STL vector的用法要熟悉。
3、超过1000mL的只喝五天,每天的价格要按总价除以5天来计算,因为最多只能喝5天。
4、如果每天的价格相同,要输出总容量大的。
代码
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
struct Milk {
string name;
double perPrice;
double vol;
};
int compare(Milk a, Milk b) {
if(a.perPrice!=b.perPrice) {
return a.perPrice<b.perPrice;
} else {
return a.vol>b.vol;
}
}
int main() {
int T;
cin>>T;
for(int i=0; i<T; i++) {
int N;
cin>>N;
vector<Milk> v;
v.clear();
for(int j=0; j<N; j++) {
Milk m;
cin>>m.name;
int price;
cin>>price;
int vol;
cin>>m.vol;
if(m.vol>=1000) {
m.perPrice = price / 5.0;
v.push_back(m);
} else if(m.vol>=200) {
m.perPrice = price / floor(m.vol/200);
v.push_back(m);
}
}
sort(v.begin(), v.end(), compare);
cout<<v[0].name<<endl;
}
return 0;
}
结果

本文介绍了一个关于结构体排序和STLvector使用的编程案例。重点在于如何定义结构体成员变量,如字符串类型的名字、double类型的每升价格和总量,并通过比较函数实现结构体数组的排序。同时,文章详细解释了如何使用STLvector存储和操作结构体数据,包括向vector中添加元素、清空vector、使用sort函数进行排序等。特别注意的是,对于超过1000mL的牛奶,其价格计算方式有所不同,需按总价除以5天来计算。

被折叠的 条评论
为什么被折叠?



