第m大的身份证号码(局部排序代全局、结构体排序)
第m大的身份证号码(点击)
时间限制: 1 Sec 内存限制: 128 MB
提交: 392 解决: 143
[提交] [状态] [讨论版] [命题人:admin]
题目描述
身份证号是我国公民的唯一识别码,它由18位数字或字母组成(只可能最后一位是字母)。18位身份证号码各位的含义如下:第1-2位为省、自治区、直辖市代码;第3-4位为地级市、盟、自治州代码;第5-6位为县、县级市、区代码。第7-14位为出生年月日,比如19970401代表1997年4月1日;第15-16位为顺序号,第17位代表性别,男为单数,女为双数;第18位为校验码,0-9和X。作为尾号的校验码,是把前十七位数字代入统一
的公式计算出来的,解答本题你不用关心是如何计算出来的。现在给你n个身份证号码,请你按照出生年月日的字典序(年龄从大到小)输出第m个人的身份证号。
输入
第一行包含两个正整数n和m,两数间用一个空格分隔,接下来的n行每行为一个形如上述格式的身份证号码(不需要关心校验码的正确性,不影响本题解答)。
输出
仅包含一行,为题目要求的一个身份证号码。
样例输入
复制样例数据
4 2
110108196004063022
13021119640203652X
420333197902112718
210222200012036512
样例输出
13021119640203652X
思路:
开始以为必须要将全部内容排序 然后想到了用 结构体+sort 排序 但后来写了一下cmp函数 由于从第7-14位 都需要考虑 所以cmp函数不好写 后来就放弃了这种想法。(如果用冒泡加判断每一位更是不容易)
比赛完了 和同学商量 知道原来身份证年龄可以看成一个数字 这个数字越小 代表他的年龄越大 想了想确实是这样 而且还是挺简单的 难怪 好多人都做出来了 。
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int sum[1005][5],n,m,i,j,temp;
char a[1005][25];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){ //输入每组的字符(身份证号码)
scanf("%s",a[i]);
}
for(i=0;i<n;i++){
sum[i][0]=i+1; //开二维数组 [0]位放这个省份证号码原来的顺组(不然下面排完序根本不知道要输出哪个身份证号了)
sum[i][1]=((a[i][6]-'0')*pow(10,7)+(a[i][7]-'0')*pow(10,6)+(a[i][8]-'0')*pow(10,5)+(a[i][9]-'0')*pow(10,4)+(a[i][10]-'0')*pow(10,3)+(a[i][11]-'0')*pow(10,2)+(a[i][12]-'0')*pow(10,1)+(a[i][13]-'0'));
} //将出生年月日 总共转换成一个数字 准备排序
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(sum[j][1]>sum[j+1][1]){
temp=sum[j][1];
sum[j][1]=sum[j+1][1]; // 这一步可以使用结构体排序 比赛的时候也有点忘记了
sum[j+1][1]=temp; //先就用冒泡替代一下吧
temp=sum[j][0];
sum[j][0]=sum[j+1][0];
sum[j+1][0]=temp;
}
}
}
printf("%s\n",a[sum[m-1][0]-1]); //通过排序后的数字 将要求的第m大的身份证号输出
return 0; // 二维数组存放原来编号起了非常大的作用
}
结构体排序(部分):
struct node{
int x,y; //定义结构体放在最上面 不然cmp函数会报错 说node找不到
}sum[1005]; //开始我定义了二维数组 但会报错 只需要定义以为数组就可以 因为这样就代表每个
// 都数组包含两个int型参数
int cmp(node a,node b)
{
return a.y<b.y;
}
for(i=0;i<n;i++){
sum[i].x=i+1;
sum[i].y=((a[i][6]-'0')*pow(10,7)+(a[i][7]-'0')*pow(10,6)+(a[i][8]-'0')*pow(10,5)+(a[i][9]-'0')*pow(10,4)+(a[i][10]-'0')*pow(10,3)+(a[i][11]-'0')*pow(10,2)+(a[i][12]-'0')*pow(10,1)+(a[i][13]-'0'));
}
sort(sum,sum+n,cmp); 一维数组sort+结构体 排序
第m大的身份证号码(局部排序代全局、结构体排序)的更多相关文章
- 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...
- 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
- go语言的排序、结构体排序
原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 searc ...
- 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
- 【C++】从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
- 小球(总结sort和cmp函数、结构体排序)
问题 N: 小球(点击) 时间限制: 1 Sec 内存限制: 128 MB ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏
主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...
- hdu1263 水果(结构体排序)
Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样J ...
随机推荐
- jQuery中效果animate方法解决width是百分比出现的问题
jQuery中效果animate方法解决width是百分比出现的问题 http://www.mafutian.net/131.html 问题描述: 效果如图,初始化,每个层宽20%,采用animate ...
- 排序算法的总结——Java实现
前言 简单归纳一下最近学习的排序算法,如果有什么错误的地方还请大家指教. 本文介绍了七种经典排序算法,包括冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序以及堆排序,并且讨论了各种算法的进一 ...
- 1417. 重新格式化字符串--来源:力扣(LeetCode)
题目描述: 给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母. 请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同.也就是说,字母后面应该跟着数字,而数字后面应该跟着字母. 请 ...
- 新版Element-UI级联选择器高度位置不对的问题
在做电商后台管理系统项目事遇到的问题,可能视频是去年的,element现在已经是新版本了,有些地方修改了,从而导致了以下问题 级联选择器的位置不对 解决的方法就是在全局css中添加以下代码: .el- ...
- vue 实例化使用模板
var vm = new Vue({ el:"", data:{ }, methods:{ } })
- [译] 制作 Vue 3 的过程
原文链接: https://increment.com/frontend/making-vue-3 在过去的一年里,Vue 团队一直在研究 Vue.js 的下一个主要版本,我们希望在 2020 年上半 ...
- require.js与IDEA的配合
本文主要讲述在html中使用requirejs时,如何让IDEA更加智能识别javascript的方法. 测试时的目录结构,一种典型的 thinkphp 的结构,同时,在 a.thml 中通过 req ...
- 1. vue文件结构
1)这是文件规则 <template> <div > </div> </template> <script> Name:"当前的名 ...
- 【jQuery】全功能轮播图的实现(本文结尾也有javascript版)
轮播图 图片自动切换(定时器): 鼠标悬停在图片上图片不切换(清除定时器) 鼠标悬停在按钮上时显示对应的图片(鼠标悬停事件) 鼠标悬停在图片上是现实左右箭头 点击左键切换到上一张图片,但图片为第一张时 ...
- Java实现 LeetCode 349 两个数组的交集
349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: num ...