新年快到了,小明想从他的玩具中挑选他最喜欢的两个玩具送给他最要好两位同学。现已知小明每个玩具喜欢值,让你来帮小明找出礼物。C++
时间: 2024-11-03 16:23:27 浏览: 27
在C++中,为了帮助小明选择最喜欢的两个玩具送给朋友,我们可以创建一个简单的数据结构,比如一个`struct`来表示每个玩具,包含名字和喜欢值。然后我们可以通过一个优先队列(`priority_queue`),由于题目需要选择最喜欢的是两个,所以我们可以维护一个最大堆(最大优先级队列)来存储当前最喜欢的两个玩具。
```cpp
#include <iostream>
#include <queue>
#include <string>
// 定义玩具结构体
struct Toy {
std::string name;
int likeValue;
// 按照喜欢值降序排列
bool operator<(const Toy& other) const {
return likeValue > other.likeValue;
}
};
int main() {
std::priority_queue<Toy> toys; // 用于存放喜欢值最高的两个玩具
// 假设小明有若干个玩具,这里用数组代替实际的输入
Toy toysList[] = {{"ToyA", 50}, {"ToyB", 70}, {"ToyC", 60}, {"ToyD", 80}};
for (const auto& toy : toysList) {
toys.push(toy);
// 如果队列大小超过2,则弹出最小的一个
if (toys.size() > 2) {
toys.pop();
}
}
// 现在队列中就是小明最喜欢的两个玩具
std::cout << "小明最喜欢的两个玩具分别是:" << std::endl;
while (!toys.empty()) {
std::cout << toys.top().name << " (喜欢值:" << toys.top().likeValue << ")" << std::endl;
toys.pop();
}
return 0;
}
```
阅读全文