九度OJ 1187:最小年龄的3个职工 (排序)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2291
解决:936
- 题目描述:
-
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
- 输入:
-
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。
接下来的N行有N个职工的信息:
包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
- 输出:
-
可能有多组测试数据,对于每组数据,
输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关键字顺序:年龄>工号>姓名,从小到大。
- 样例输入:
-
5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65
- 样例输出:
-
501 Jack 6
923 Lucy 15
814 Mickle 65
思路:
常规思路是先排序再取3个最大值。如果N特别大也可以不排序直接求三个最大值,时间更优。
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h> #define N 30 struct node {
int num;
char name[11];
int age;
}; void print(struct node *p)
{
printf("%d %s %d\n", p->num, p->name, p->age);
} int cmp(const void *a, const void *b)
{
struct node *c = (struct node *)a;
struct node *d = (struct node *)b;
if (c->age != d->age)
return c->age - d->age;
else if (c->num != d->num)
return c->num - d->num;
else
return strcmp(c->name, d->name);
} int main(void)
{
int n, i;
struct node a[N]; while (scanf("%d", &n) != EOF)
{
for (i=0; i<n; i++)
scanf("%d %s %d", &(a[i].num), a[i].name, &(a[i].age));
qsort(a, n, sizeof(a[0]), cmp);
int min = n>3 ? 3 : n;
for (i=0; i<min; i++)
{
print(&a[i]);
}
} return 0;
}
/**************************************************************
Problem: 1187
User: liangrx06
Language: C
Result: Accepted
Time:10 ms
Memory:912 kb
****************************************************************/
九度OJ 1187:最小年龄的3个职工 (排序)的更多相关文章
- 九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
- 九度OJ 1086 最小花费--动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1086 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对 ...
- 九度OJ 1209 最小邮票数 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1209 题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值. 如,有1分,3分,3分,3 ...
- [九度OJ]1431.Sort(寻找前m大数并排序)
原题链接:http://ac.jobdu.com/problem.php?pid=1431 题目描述: 给你n个整数,请按从大到小的顺序输出其中前m大的数. 输入: 每组测试数据有两行,第一行有两个数 ...
- 九度OJ 1174:查找第K小数 (排序、查找)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6376 解决:2539 题目描述: 查找一个数组的第K小的数,注意同样大小算一样大. 如 2 1 3 4 5 2 第三小数为3. 输入: ...
- 九度OJ 1181:遍历链表 (链表、排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2733 解决:1181 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1 ...
- 九度OJ 1149:子串计算 (计数、排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1026 解决:571 题目描述: 给出一个01字符串(长度不超过100),求其每一个子串出现的次数. 输入: 输入包含多行,每行一个字符串. ...
- 九度OJ 1013:开门人和关门人 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5052 解决:2563 题目描述: 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请 ...
- 【九度OJ】题目1187:最小年龄的3个职工 解题报告
[九度OJ]题目1187:最小年龄的3个职工 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1187 题目描述: 职工有职工号,姓名, ...
随机推荐
- 前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'
项目中做导入的时候遇到个bug,用JSON.stringify()序列号json对象传给后台:然后后台通过getPatameter()获取值时,前台的英文引号变成了中文引号. 原来代码如下:(自己排查 ...
- ElastcSearch的Mapping映射建立
根据oracle的字段来建立ElasticSearch的Mapping public class Start { private static Logger log = LoggerFactory.g ...
- ES的关键端口
ElasticSearch的集群可自发现,只要配置相同的集群名称,默认为组播发现机制,默认情况下: http 端口:9200 需要打开给调用 数据传输端口:9300 用于集群之间交换数据 组播端口(U ...
- asp.net显示评论的时候为几天前的格式
自己做的一个小项目实现的功能,做个记录先~ 效果如图: 代码如下: public static class TimerHelper { public static string GetTimeSpan ...
- Elasticsearch教程(三),IK分词器安装 (极速版)
如果只想快速安装IK,本教程管用.下面看经过. 简介: 下面讲有我已经打包并且编辑过的zip包,你可以在下面下载即可. 当前讲解的IK分词器 包的 version 为1.8. 一.下载zip包. 下面 ...
- Angular 学习笔记——run
<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...
- [脚本编程] 过云盾、D盾各种盾shell
作者: dean <?php //过云盾.D盾各种盾shell $id = $_GET['id']; //debug echo $catid = isset($_GET['catid'])?ba ...
- A Quick Look at P3P
P3P Made Simple By default, IE will reject cookies coming from 3rd-party contexts. A 3rd-party conte ...
- Swing基础知识
1 http://zxc8899.iteye.com/blog/1556094 最基本的组件 2 http://zhangjunhd.blog.51cto.com/113473/128174 布局管 ...
- centos自动安装镜像脚本
#!/bin/bash ######################################################################################## ...