网站建设实验结论,蓝色系 网站,wordpress 注册菜单,丰浩网站建设中心题目链接#xff1a;
复数集合_牛客题霸_牛客网 一个复数#xff08;xiy#xff09;集合#xff0c;两种操作作用在该集合上#xff1a; 1、Pop 表示读出集。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692724009060
描述 一个复数#xff08;…题目链接
复数集合_牛客题霸_牛客网 一个复数xiy集合两种操作作用在该集合上 1、Pop 表示读出集。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692724009060
描述 一个复数xiy集合两种操作作用在该集合上 1、Pop 表示读出集合中复数模值最大的那个复数如集合为空 输出 empty 不为空就输出最大的那个复数并且从集合中删除那个复数再输出集合的大小SIZE 2 Insert aib 指令ab表示实部和虚部将aib加入到集合中 输出集合的大小SIZE 最开始要读入一个int n表示接下来的n行每一行都是一条命令。
输入描述
输入有多组数据。 每组输入一个n(1n1000)然后再输入n条指令。
输出描述
根据指令输出结果。 模相等的输出b较小的复数。 a和b都是非负数。
示例1
输入
3
Pop
Insert 1i2
Pop输出
empty
SIZE 1
1i2
SIZE 0思路
定义复数结构 Complex包含实部 real 和虚部 imag。重载 Complex 类的小于运算符按照复数模长大小比较用于优先队列中的自动排序。在 main 函数中首先读取一个整数 n表示操作次数。创建一个优先队列 myQueue用于存储复数并按照大小自动排序。循环 n 次根据输入的字符串判断是执行 Pop 操作还是插入操作。 如果是 Pop 操作判断队列是否为空如果为空则输出 empty否则输出队列顶部复数的实部和虚部然后弹出队列顶部元素输出队列大小。如果是插入操作使用 scanf 读取复数的实部和虚部创建一个 Complex 对象并插入优先队列输出队列大小。循环结束后程序终止。
源代码
#includeiostream
#includestring
#includevector
#includequeue
using namespace std;// 定义复数结构
struct Complex {int real; // 实部int imag; // 虚部Complex(int a, int b) : real(a), imag(b) {} // 构造函数// 重载小于运算符用于优先队列的比较bool operator(Complex c) const {return real * real imag * imag c.real * c.real c.imag * c.imag;}
};int main() {int n;while (cin n) {priority_queueComplex myQueue; // 创建一个优先队列按照复数大小自动排序for (int i 0; i n; i) {string s;cin s;if (s Pop) {if (myQueue.empty()) {cout empty endl; // 队列为空输出 empty}else {// 输出队列顶部复数的实部和虚部并弹出队列顶部元素cout myQueue.top().real i myQueue.top().imag endl;myQueue.pop(); // 弹出队列顶部元素cout SIZE myQueue.size() endl; // 输出队列大小}}else {int a, b;scanf(%di%d, a, b); // 读取复数的实部和虚部myQueue.push(Complex(a, b)); // 将复数插入优先队列cout SIZE myQueue.size() endl; // 输出队列大小}}}return 0;
}提交结果