【九度OJ】题目1178:复数集合 解题报告

标签(空格分隔): 九度OJ


http://ac.jobdu.com/problem.php?pid=1178

题目描述:

一个复数(x+iy)集合,两种操作作用在该集合上:
1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;
2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;
最开始要读入一个int n,表示接下来的n行每一行都是一条命令。

输入:

输入有多组数据。
每组输入一个n(1<=n<=1000),然后再输入n条指令。

输出:

根据指令输出结果。

样例输入:

3
Pop
Insert 1+i2
Pop

样例输出:

empty
SIZE = 1
1+i2
SIZE = 0

提示:

模相等的输出b较小的复数。
a和b都是非负数。

Ways

挺难的一个题目。首先这是个排序问题,按照模以及b的值进行排序:

如果从大到小排序,满足大>小的条件是返回true

第二个注意删除节点的时候,如果还用size和sort就不好弄了,因为这样做是清零了一个节点。可以简单粗暴的移动就好了。

第三个注意数字量输入:scanf("%d+i%d", &nums[size].a, &nums[size].b);,可以直接读到最后的一个位置,两个%d直接把数据读了出来。

细节很多,处处注意。

#include<stdio.h>
#include<algorithm> using namespace std; struct Num {
int a, b;
} nums[1000]; bool cmp(Num x, Num y) {//
int temp = (x.a * x.a + x.b * x.b) - (y.a * y.a + y.b * y.b);//
if (temp == 0) {
return x.b < y.b;
} else {
return temp > 0;
}
} int main() {
int n;
while (scanf("%d", &n) != EOF) {
int size = 0;
while (n--) {
char cmd[100];
scanf("%s", cmd);
if (cmd[0] == 'P') {//POP
if (size == 0) {
printf("empty\n");
} else {
sort(nums, nums + size, cmp);
printf("%d+i%d\n", nums[0].a, nums[0].b);
for (int i = 0; i < size - 1; i++) {//删除
nums[i] = nums[i + 1];
}
size--;
printf("SIZE = %d\n", size);
}
} else {//Insert
scanf("%d+i%d", &nums[size].a, &nums[size].b);//数字输入
size++;
printf("SIZE = %d\n", size);
}
}
} return 0;
}

Date

2017 年 3 月 17 日

最新文章

  1. setTimeout 第三个参数 改变setTimeout的作用对象 控制下拉框的关闭
  2. LR破解版录制手机脚本
  3. which、whereis、locate、find 命令用法
  4. .net 对称加密DESCryptoServiceProvider
  5. jQuery响应式幻灯片插件jquery.glide.js(支持触摸&amp;轻量级)
  6. eclipse中使用tomcat图解
  7. .IIS7如何设置301重定向详解
  8. php 备份数据库
  9. C++ 中Hello World的一种写法
  10. php抽奖概率算法(刮刮卡,大转盘)
  11. 极光推送助推视频App,打造最活跃手机新媒体平台
  12. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  13. Bundle使用&amp;NSBundle
  14. 文件无法删除java.io.IOException: Unable to delete
  15. ls -l 显示年份
  16. JAVA_SE基础——63.String类的常用方法
  17. C#基础_MD5
  18. python之正则表达式及RE模块
  19. websocket c++ example
  20. JAVA实现SFTP实例

热门文章

  1. 比对软件Blast,Blast+,Diamond比较
  2. char*,string,char a[], const char *,之间的转换
  3. 论文解读(SDNE)《Structural Deep Network Embedding》
  4. JVM结构详解
  5. API 管理在云原生场景下的机遇与挑战
  6. 大数据学习day33----spark13-----1.两种方式管理偏移量并将偏移量写入redis 2. MySQL事务的测试 3.利用MySQL事务实现数据统计的ExactlyOnce(sql语句中出现相同key时如何进行累加(此处时出现相同的单词))4 将数据写入kafka
  7. 双向链表——Java实现
  8. Logback设置保留日志文件个数
  9. [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
  10. 【Linux】【Services】【Project】Cobbler自动化装机