【九度OJ】题目1178:复数集合 解题报告
2024-10-13 22:48:36
【九度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 日
最新文章
- setTimeout 第三个参数 改变setTimeout的作用对象 控制下拉框的关闭
- LR破解版录制手机脚本
- which、whereis、locate、find 命令用法
- .net 对称加密DESCryptoServiceProvider
- jQuery响应式幻灯片插件jquery.glide.js(支持触摸&;轻量级)
- eclipse中使用tomcat图解
- .IIS7如何设置301重定向详解
- php 备份数据库
- C++ 中Hello World的一种写法
- php抽奖概率算法(刮刮卡,大转盘)
- 极光推送助推视频App,打造最活跃手机新媒体平台
- 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
- Bundle使用&;NSBundle
- 文件无法删除java.io.IOException: Unable to delete
- ls -l 显示年份
- JAVA_SE基础——63.String类的常用方法
- C#基础_MD5
- python之正则表达式及RE模块
- websocket c++ example
- JAVA实现SFTP实例
热门文章
- 比对软件Blast,Blast+,Diamond比较
- char*,string,char a[], const char *,之间的转换
- 论文解读(SDNE)《Structural Deep Network Embedding》
- JVM结构详解
- API 管理在云原生场景下的机遇与挑战
- 大数据学习day33----spark13-----1.两种方式管理偏移量并将偏移量写入redis 2. MySQL事务的测试 3.利用MySQL事务实现数据统计的ExactlyOnce(sql语句中出现相同key时如何进行累加(此处时出现相同的单词))4 将数据写入kafka
- 双向链表——Java实现
- Logback设置保留日志文件个数
- [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- 【Linux】【Services】【Project】Cobbler自动化装机