当前位置: 首页 > news >正文

【PAT甲级1505列表排序】结构体排序

https://www.acwing.com/problem/content/description/1507/
Excel可以根据任何列对记录进行排序。现在,你需要模仿此功能。
输入格式
第一行包含两个整数 N和 C,分别表示记录条数以及用来排序的列的编号。
接下来 N行,每行包含一条学生记录。
记录包括学生 ID,一个唯一的 6 位数字,名称,一个长度不超过 8 的不含空格的字符串,成绩,一个范围在 [0,100] 的整数。

输出格式
输出共 N 行,表示排序后的记录。
如果 C=1,则按照 ID 升序的顺序排序。
如果 C=2,则按照名称以不降序的顺序排序。
如果 C=3,则按照成绩以不降序的顺序排序。
当出现学生名字相同或是成绩相同的情况时,按照 ID 升序的顺序,对他们进行排序。
数据范围
1≤N≤105
输入样例1:
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
输出样例1:
000001 Zoe 60
000007 James 85
000010 Amy 90
输入样例2:
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
输出样例2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
输入样例3:
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
输出样例3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90

#include<bits/stdc++.h> 
using namespace std;

struct Row{
	string a; //a为id 
	int b; //b为成绩 
	string s; //s为姓名   
}; 

//【重要】注意cmp1的参数类型是Row,而不是row   
bool cmp1(Row x,Row y){ //也可写const Row &x 
	return x.a<y.a;
} 

bool cmp2(Row x,Row y){ 
	if(x.s!=y.s) return x.s<y.s;
	return x.a<y.a;
} 

bool cmp3(Row x,Row y){
	if(x.b!=y.b) return x.b<y.b;
	return x.a<y.a;
}

int main() { 
	int n,c;
	scanf("%d%d",&n,&c); //int输入别忘加& 
	Row row[n];
	for(int i=0;i<n;i++){ 
		char x[10],y[10];
//		cin>>row[i].a>>row[i].s>>row[i].b; //用cout/cin此会超时 
		scanf("%s%s%d",x,y,&row[i].b);
		row[i].a=string(x); //string将字符数组转为字符串 
		row[i].s=string(y);
	} 
	if(c==1) sort(row,row+n,cmp1); 
	if(c==2) sort(row,row+n,cmp2); 
	if(c==3) sort(row,row+n,cmp3); 
	
	for(int i=0;i<n;i++){ 
//		cout<<row[i].a<<" "<<row[i].s<<" "<<row[i].b<<endl; 
		printf("%s %s %d",row[i].a.c_str(),row[i].s.c_str(),row[i].b); 
		printf("\n");
	}
	
    return 0;
}

相关文章:

  • 【第21节】C++设计模式(行为模式)-Chain of Responsibility(责任链)模式
  • 【Java代码审计 | 第十篇】命令执行漏洞成因及防范
  • Scala:柯里化函数的基本介绍(通俗易懂)
  • 深度学习(斋藤)学习笔记(五)-反向传播2
  • 平面机械臂运动学分析
  • 如何高效地找工作?
  • tomcat单机多实例部署
  • 2025年渗透测试面试题总结-腾某讯-技术安全实习生(题目+回答)
  • 使用XShell连接RHEL9并配置yum阿里源
  • 使用express创建服务器保存数据到mysql
  • linux安装nginx
  • 【前端基础】Day 10 CSS3-2D3D
  • Visual Studio Code for SAP (SAP PRESS) (Leon Hassan)
  • Vue中常见动画执行详解
  • 数据库高级面试题
  • 第六课:数据库集成:MongoDB与Mongoose技术应用
  • javaweb:Maven、SpringBoot快速入门、HTTP协议
  • OpenCV视频解码性能优化十连击(实测帧率提升300%)
  • Java数据结构:解构排序算法的艺术与科学(一)
  • 光通信产业链分析
  • 企业网站黄页怎么做/搜索引擎优化seo培训
  • 博客网站怎么做/seo推广优化培训
  • 有建设银行信用卡怎么登陆不了网站/广西百度seo
  • 东莞电子网站建设/计算机培训机构哪个最好
  • 自己有网站怎么做点卡?/西安关键词快速排名
  • wordpress搬家 数据库/北京中文seo