一个复数(x+iy)集合,两种操作作用在该集合上: 1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE; 2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE; 最开始要读入一个int n,表示接下来的n行每一行都是一条命令。示例输入:3PopInsert 1+i2Pop示例输出:emptySIZE = 11+i2SIZE = 0我想用algorithm中的max_element来找出Pop的复数值,并且使用自定义谓词:bool MAX(Com Ca,Com Cb)//Com是两个复数{if((Ca.R*Ca.R+Ca.I*Ca.I)>(Cb.R*Cb.R+Cb.I*Cb.I))//判断模长return true;else if(Ca.R*Ca.R+Ca.I*Ca.I==Cb.R*Cb.R+Cb.I*Cb.I)//在模长相等的时候,判断虚部{if(Ca.I<Cb.I)return true;}return false;}但是没有accepted,我把max_element改成了min_element,结果对了。问:为什么max_element是错的,而min_element是对的?使用max_element时,没通过的测试用例:输入:88 Insert 407+i235 Insert 242+i490 Pop ……正确输出:SIZE = 1SIZE = 2242+i490SIZE = 1实际:SIZE = 1SIZE = 2407+i235SIZE = 1
添加回答
举报
0/150
提交
取消