九度OJ 1178:复数集合 (插入排序)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:8393
解决:1551
- 题目描述:
-
一个复数(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都是非负数。
思路:
定义一个复数结构体,同时定义比较操作,对结构体数组进行插入排序。
我写的代码有点复杂了,没必要非要用链表。
代码:
#include <stdio.h>
#include <stdlib.h> #define N 1000 struct node {
int x;
int y;
struct node *next;
}; int size; int squareSum(int x, int y)
{
return x*x+y*y;
} struct node *insert(struct node *head, int x, int y)
{
if (head == NULL)
{
head = (struct node *)malloc(sizeof(struct node));
head->x = x;
head->y = y;
head->next = NULL;
printf("SIZE = %d\n", ++size);
return head;
}
struct node *p = head, *p0;
p0 = p;
while (p && squareSum(p->x, p->y) <= squareSum(x, y))
{
if (squareSum(p->x, p->y) == squareSum(x, y) && p->x > x)
break;
p0 = p;
p = p->next;
}
struct node *pnew = (struct node *)malloc(sizeof(struct node));
pnew->x = x;
pnew->y = y;
pnew->next = p;
printf("SIZE = %d\n", ++size);
if (p == head)
return pnew;
p0->next = pnew;
return head;
}
struct node * pop(struct node *head, int *x, int *y)
{
if (head == NULL)
{
printf("empty\n");
return head;
}
if (head->next == NULL)
{
printf("%d+i%d\n", head->x, head->y);
printf("SIZE = %d\n", --size);
return NULL;
}
struct node *p=head, *p0;
do {
p0 = p;
p = p->next;
} while (p->next != NULL);
printf("%d+i%d\n", p->x, p->y);
printf("SIZE = %d\n", --size);
p0->next = NULL;
return head;
} int main(void)
{
int n, i, x, y;
struct node *head;
char command[N]; while (scanf("%d", &n) != EOF)
{
head = NULL;
size = 0;
for(i=0; i<n; i++)
{
scanf("%s", command);
if (command[0] == 'P')
{
head = pop(head, &x, &y);
}
else
{
scanf("%d+i%d", &x, &y);
head = insert(head, x, y);
}
}
} return 0;
}
/**************************************************************
Problem: 1178
User: liangrx06
Language: C
Result: Accepted
Time:10 ms
Memory:912 kb
****************************************************************/
九度OJ 1178:复数集合 (插入排序)的更多相关文章
- 【九度OJ】题目1178:复数集合 解题报告
[九度OJ]题目1178:复数集合 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1178 题目描述: 一个复数(x+iy)集合,两种 ...
- 【九度OJ】题目1170:找最小数 解题报告
[九度OJ]题目1170:找最小数 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1170 题目描述: 第一行输入一个数n,1 < ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
- 九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
随机推荐
- springboot 2.0.8 跳转jsp页面
springboot项目创建教程 https://blog.csdn.net/q18771811872/article/details/88126835 springboot 2.0跳转 html教程 ...
- SQL SERVER 技术博客 外文
https://www.sqlskills.com/blogs/paul/capturing-io-latencies-period-time/ http://www.sqlskills.com/bl ...
- AMD 的 CommonJS wrapping
其实本文的标题应该是「为什么我不推荐使用 AMD 的 Simplified CommonJS wrapping」,但太长了不好看,为了美观我只能砍掉一截. 它是什么? 为了复用已有的 CommonJS ...
- How To Install Oracle Forms 12c On Windows 7
Below is the step by step guide to install Oracle Forms 12c on Windows 7. To install Oracle Forms 12 ...
- mysql赋给用户权限grant all privileges on
查看mysql用户表的结构,Field项都是各类权限限制 Host限制登录的IP,User限制登录的用户,Delete_priv限制删除权限,Grant_priv限制权限授予,Super_priv为超 ...
- 浅谈XXE攻击
一.XXE,即XML External Entity,XML外部实体.ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后 ...
- 经验分享 | Burpsuite抓取非HTTP流量
使用Burp对安卓应用进行渗透测试的过程中,有时候会遇到某些流量无法拦截的情况,这些流量可能不是HTTP协议的,或者是“比较特殊”的HTTP协议(以下统称非HTTP流量).遇到这种情况,大多数人会选择 ...
- Linux:和任务执行相关的 【批命令执行 runparts 】命令
run-parts:执行目录下的 命令或脚本 工具,其他非可执行文件和子目录下的文件不会被执行.目录下的命令,是以基本的词汇(字符)顺序执行的,除非你指定了--reverse 逆序选项!这是个老牌的G ...
- Win7如何修复开机画面
将下面文件保存为"修复Win7开机画面.bat"双击运行即可 bcdedit /set {current} locale zh-CN
- WIFI NVRAM WARNING不同数字的含义
1. NVRAM WARNING的意义 Wi-Fi Driver会去侦測手机上 MT6620 Wi-Fi NVRAM的状况,假设侦測结果有错误的话,会把 Error Code显示在SCAN Resul ...