【PAT】B1015 德才论
这道题算是挺简单,我在群里看到的别人琢磨好久过不去,大多是因为没有考虑好四种等级的判断条件
一定要保证四种判断条件正确。
下面这是我的代码,比较笨。后边有别人那学来的聪明些的方法
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct student{
int number,de,cai,sum;
}A[100000],//H(<100为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,
B[100000],//才分不到但德分到线的一类考生属于“德胜才”,
C[100000],//德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者
D[100000];//其他达到最低线L的考生也
int num=0;
bool cmp(student A,student B){
if(A.sum!=B.sum) return A.sum>B.sum;
else if(A.de!=B.de) return A.de>B.de;
else return A.number<B.number;
}
void prr(student *arr,int Si){
for(int i=0;i<Si;i++){
printf("%08d %d %d",arr[i].number,arr[i].de,arr[i].cai);
num--;
if(num!=0)printf("\n");
}
}
int main(){
int N,L,H,AA,BB,CC,DD;
AA=BB=CC=DD=0;
student temp;
scanf("%d%d%d",&N,&L,&H);
for(int i=0;i<N;i++){
scanf("%d %d %d",&temp.number,&temp.de,&temp.cai);
temp.sum=temp.de+temp.cai;
if(temp.de>=L&&temp.cai>=L){
num++;
if(temp.cai>=H&&temp.de>=H){A[AA++]=temp;continue;}
if(temp.de>=H&&temp.cai<H) {B[BB++]=temp;continue;}
if(temp.cai<H&&temp.de<H&&temp.de>=temp.cai){C[CC++]=temp;continue;}
D[DD++]=temp;
}
}
sort(A,A+AA,cmp);
sort(B,B+BB,cmp);
sort(C,C+CC,cmp);
sort(D,D+DD,cmp);
printf("%d\n",num);
prr(A,AA);
prr(B,BB);
prr(C,CC);
prr(D,DD);
return 0;
}
好方法:
用结构体数组储存数据,每个数据有一个等级变量,通过这个变量和sort函数排序,直接将四种等级分开了,省去好多事
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct stu{
char id[10];
int D;int C;
int flag,sum;
}temp,ex[100010];
bool cmp(stu a,stu b){
if(a.flag!=b.flag)return a.flag<b.flag;
else if(a.sum!=b.sum)return a.sum>b.sum;
else if(a.D!=b.D)return a.D>b.D;
else return strcmp(a.id,b.id)<0;
}
int main(){
int N,L,H,local=0;
scanf("%d %d %d",&N,&L,&H);
for(int i=0;i<N;i++){
scanf("%s %d %d",temp.id,&temp.D,&temp.C);
if(temp.D<L||temp.C<L)continue;
strcpy(ex[local].id,temp.id);
ex[local].D=temp.D;
ex[local].C=temp.C;
if(ex[local].D>=H&&ex[local].C>=H)ex[local].flag=1;
else if(ex[local].D>=H&&ex[i].C<H)ex[local].flag=2;
else if(ex[local].D<H&&ex[local].C<H&&ex[local].D>=ex[local].C)ex[local].flag=3;
else ex[local].flag=4;
ex[local].sum=ex[local].D+ex[local].C;
local++;
}
sort(ex,ex+local,cmp);
printf("%d\n",local);
for(int i=0;i<local;i++){
printf("%s %d %d\n",ex[i].id,ex[i].D,ex[i].C);
}
return 0;
}
【PAT】B1015 德才论的更多相关文章
- PAT B1015 德才论 (25 分)
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- PAT B1015德才论
题目描述: 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不 ...
- PAT 1015. 德才论 (25) JAVA
宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...
- PAT 1015. 德才论 (25)
宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...
- PAT 1015 德才论 (25)(代码+思路)
1015 德才论 (25)(25 分)提问 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子, ...
- PAT——1015. 德才论
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- 【算法笔记】B1015 德才论
1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君 ...
- PAT 1015 德才论
https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312 宋代史学家司马光在<资治通鉴>中 ...
- PAT B1015A1062德才论(25)
题目描述 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- Docker技术知识点总结
Docker技术知识点总结 本文宿主机环境Centos7.4Docker version 18.09.2, build 6247962采用国内 Daocloud 加速器---------------- ...
- qt之图像处理
毕业2年了,一直使用的qt做桌面程序,很少接触图像算法类的东西,最近由于项目的原因,不得不了解下图像处理,不过也是一些简单的图像处理,仅此作为记录,并希望能帮助初学qt图像处理的朋友. 首先我推荐一篇 ...
- JS 中 原生方法 (二) --- 数组 (修---添加ES6新增)
const arr = [1, 2, 3, 5, 'a', 'b'] /** * * length * 这个只能被 称之为 数组的原生属性, 返回 一个 number * arr.length */ ...
- AR增强现实开发介绍
AR增强现实开发介绍 ---理论篇 AR增强现实开发最近做一些AR增强现实的内容,一些普及性的内容,与大家分享. 一: 什么是AR增强现实技术: 是一种将真实世界信息和虚拟世界信息“无缝”集成的新 ...
- Docker折腾手记-安装
安装 docker红的发紫,所以博主耳闻这么久,也要来折腾折腾了 研究不多,个人目前认为docker给我们带来了以下好处 开发机器因为开发原因,需要配置各种各校的环境,繁琐且耗费资源.配来配去还容易环 ...
- HashMap,HashTable,ConcurrentHashMap异同比较
0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而H ...
- RabbitMQ消息队列(十一)-如何实现高可用
在前面讲到了RabbitMQ高可用集群的搭建,但是我们知道只是集群的高可用并不能保证应用在使用消息队列时完全没有问题,例如如果应用连接的RabbitMQ集群突然宕机了,虽然这个集群时可以使用的,但是应 ...
- C语言实现二叉树的创建&遍历
算法思想(重点是递归的使用) 利用扩展先序遍历序列创建二叉链表 采用类似先序遍历的递归算法,首先读入当前根结点的数据,如果是'.'则将当前 树根置为空,否则申请一个新结点,存入当前根结点的数据,分别 ...
- leetcode — triangle
/** * Source : https://oj.leetcode.com/problems/triangle/ * * * Given a triangle, find the minimum p ...
- NiftyNet 数据预处理
NiftyNet项目介绍 使用NiftyNet时,我们需要先将图像数据和标签进行一次简单的处理,得到对应的.csv文件. 对应文件格式为: img.csv image path img_name im ...