005 德才论

2023-10-27 15:18
文章标签 德才 005

本文主要是介绍005 德才论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*
题目描述
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之
小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入描述:
输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格
被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到
但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼
亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。输出描述:
输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人
总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。输入例子:
14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60输出例子:
12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90
*/
#include<iostream>
#include<string>
using namespace std;struct Student
{int id; //考号int c; //才能分int d; //德能分int sum; //总分
};void Sort(Student* stu, int count) //学生排序
{int i, j, flag;Student temp;for (i = 0; i < count - 1; i++) //按照总成绩排序{flag = 0;for (j = 0; j < count - 1 - i; j++){if (stu[j].sum < stu[j + 1].sum){temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;flag = 1;}}if (flag == 0)break;}for (i = 0; i < count - 1; i++) //对于总成绩相同的,德才分高的优先排在前面{flag = 0;for (j = 0; j < count - 1 - i; j++){if (stu[j].sum == stu[j + 1].sum && stu[j].d < stu[j + 1].d){temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;flag = 1;}}if (flag == 0)break;}for (i = 0; i < count - 1; i++) //对于总成绩且德才分相同的,按考号排序{flag = 0;for (j = 0; j < count - 1 - i; j++){if (stu[j].sum == stu[j + 1].sum && stu[j].d == stu[j + 1].d && stu[j].id > stu[j + 1].id){temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;flag = 1;}}if (flag == 0)break;}
}void Print(Student* stu, int count)
{for (int i = 0; i < count; i++)cout << stu[i].id << " " << stu[i].d << " " << stu[i].c << endl;
}int main()
{int n, l, h; //考生总数,最低分数线,优先录取线cin >> n >> l >> h;Student stu1[100000], stu2[100000], stu3[100000], stu4[100000];int count1 = 0, count2 = 0, count3 = 0, count4 = 0; //记录各类学生的数量int c, d, id;for (int i = 0; i < n; i++){cin >> id >> d >> c;if (d >= h && c >= h) //才德全尽{stu1[count1].id = id;stu1[count1].c = c;stu1[count1].d = d;stu1[count1].sum = c + d;count1++;}else if (d >= h && c < h && c >= l) //德胜才{stu2[count2].id = id;stu2[count2].c = c;stu2[count2].d = d;stu2[count2].sum = c + d;count2++;}else if (d < h && d >= l && c < h && c >= l && d >= c) //属于“才德兼亡”但尚有“德胜才”者{stu3[count3].id = id;stu3[count3].c = c;stu3[count3].d = d;stu3[count3].sum = c + d;count3++;}else if (d < h && d >= l && d < c) //第四类考生{stu4[count4].id = id;stu4[count4].c = c;stu4[count4].d = d;stu4[count4].sum = c + d;count4++;}}Sort(stu1, count1);Sort(stu2, count2);Sort(stu3, count3);Sort(stu4, count4);cout << count1 + count2 + count3 + count4 << endl;Print(stu1, count1);Print(stu2, count2);Print(stu3, count3);Print(stu4, count4);system("pause");return 0;
}

一开始运行的时候碰到了如下问题···
在这里插入图片描述
最后用一位博主的方法解决了问题,附上以下链接
https://blog.csdn.net/hanshanbuleng/article/details/81873343

本题需要注意的几点在于
①、最后一类学生的判断方法,只要德分过及格线且低于优秀线,然后德分低于才分的任何情况都属于第四类学生
②、输出的时候一开始没注意要先输出符合四类学生的总数
③、代码最初是用 string 来保存学生考号 id 的,结果提交的时候出现大量运行超时的情况,后连换成int 全部通过了

通过这个题顺便也复习了一下标识的冒泡排序,可喜可贺( ̄▽ ̄)*

这篇关于005 德才论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/286526

相关文章

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果                                                    右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界坐标系中vtkImageData的参数 总结:

【Rust】005-Rust 结构体

【Rust】005-Rust 结构体 文章目录 【Rust】005-Rust 结构体一、基本使用1、代码示例2、说明3、简化的结构体实例的创建写法简化前简化后说明 4、使用新实例更新字段 二、元组结构体1、代码示例2、说明3、使用场景案例(1)类型安全的标识符(2)封装简单的值(3)实现自定义行为(4)用于单元测试 三、单元结构体1、代码示例2、说明3、单元结构体实例代码说明 4、Rus

005数据库结构 分析

打个比方:数据库就是一幢大楼,我们要先盖楼,然后再招住户(住户当然就是数据库对象,)。我们盖得大楼的基本格局设计师们已经为我们设计好,我们在创建数据库过程中,系统(设计师)就会我们把格局设计好。我们住户住进去后只需根据自己的需要小改就可以了。那么我们现在来盖楼吧。 一、数据库的存储结构 数据库文件:逻辑结构和物理结构 逻辑存储结构:文件的性质:数据文件和日志文件。 数据文件:

005.Python爬虫系列_浏览器开发者工具(详解)

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

005-CircuitBreaker断路器-Resilience4J

文章目录 1 CircuitBreaker1.1 实现原理1.2 一句话 2 Resilience4J2.1 是什么2.2 能干嘛2.3 怎么用 3 熔断(CircuitBreaker)(服务熔断+服务降级)3.1 断路器三大状态3.2断路器3大状态之前的转换3.3断路器所有配置参数参考3.4 熔断+降级案例需求说明3.5 COUNT_BASED(计数的滑动窗口)3.5.1 cloud-pr

SpringMVC_005_@RequestParam @RequestHeader @CookieValue

handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解:   @PathVariable; B、处理request header部分的注解:   @RequestHeader, @Cookie

005、架构_数据节点

​DN组件总览 ​ DN节点包含进程 dbagent进程:主要提供数据节点高可用、数据导入导出、数据备份恢复、事务一致性、运维类功能、集群的扩缩容、卸数等功能;MySQL进程:主要提供数据一致性、分组管理、快同步复制、高低水位等;

PTA L1-005 考试座位号

L1-005 考试座位号(15分) 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。 输入格式: 输入第一行给出一个正整数 N(

005 vue

文章目录 vue常用指令01 vue-helloworld.html02 v-if与v-show.html03 v-on.html04 v-for.html05 v-bind.html06 v-model.html vue的生命周期vue组件化开发思想使用vue脚手架进行模块化开发index.htmlmain.jsApp.vueHello.vueindex.js Vue官方文档

PAT-L1-005. 考试座位号

L1-005. 考试座位号 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到