A1075[PAT JUDGE] 好题
A1075[PAT JUDGE]排序
排名问题上一定要注意int rank=1的位置,一直被这里卡住很浪费时间
初始化定义完后在主函数里面一定要用init()使用出来
有嵌套循环的时候一定要注意i和j,不要搞错.
该题采用的方法是先将结构体初始化,再把通过for循环将结构体里面的内容进行修改,未被修改的内容用作是否输出的标准,是很好的方法。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct Student {int id;int score[7];bool flag;//是否有通过编译的提交int allscore;//总分int solve;//完美解题数
}stu[10010];
bool cmp(Student a, Student b) {if (a.allscore!= b.allscore) return a.allscore > b.allscore;else if(a.solve != b.solve) return a.solve > b.solve;//此处else ifelse return a.id < b.id;//记得写return
}
int n, m, k;//变量需要在此处定义
void init() {for (int i = 1; i <=n; i++) {stu[i].id = i;stu[i].allscore = 0;stu[i].solve = 0;stu[i].flag = false;memset(stu[i].score, -1, sizeof(stu[i].score));//memset用法适用于一个数组的赋值,0或-1}
}
int main() {int full[7];scanf("%d%d%d", &n, &k, &m);init();//初始化for (int i = 1; i <=k; i++) {scanf("%d", &full[i]);}int uid, pid, scoreobtain;for (int i = 1; i <= m; i++) {scanf("%d%d%d", &uid, &pid, &scoreobtain);if (scoreobtain != -1){stu[uid].flag = true;}//有通过编译的提交令flag为trueif (scoreobtain == -1 && stu[uid].score[pid] == -1){stu[uid].score[pid] = 0;}//某题第一次编译错误,令分数为0if (scoreobtain == full[pid] && stu[uid].score[pid] < full[pid]){stu[uid].solve++;}//某题第一次获得满分,令完美题数加1if (scoreobtain > stu[uid].score[pid]){stu[uid].score[pid] = scoreobtain;}//某题获得更高的分数,覆盖掉数组里面的低分}//此处对初始化的结构体做了一个完美的修改for (int i=1; i <= n; i++) {for (int j = 1; j <= k; j++) {if (stu[i].score[j] != -1){stu[i].allscore += stu[i].score[j];}}}//计算各学生的总分sort(stu + 1, stu + n + 1, cmp);//进行排序int rank=1;//这里的rank必须在for循环的外面for (int i = 1; i <= n&&stu[i].flag==true; i++) {if (i>1&&stu[i].allscore != stu[i - 1].allscore)rank = i;//边排名边输出考生信息printf("%d %05d %d", rank, stu[i].id, stu[i].allscore);for (int j = 1; j <= k; j++) {if (stu[i].score[j] == -1){printf(" -");}//没有过提交else {printf(" %d", stu[i].score[j]);}}printf("\n");}return 0;}
A1075[PAT JUDGE] 好题相关推荐
- A1075.PAT Judge
题意 输入k个程序的每个程序的满分分数,再输入m条用户提交的记录.按要求进行分数的排序最后输出.是一道结构体的复杂排序 思路分析 首先明确本题的输出要求: 编译失败的提交分数为-1. 只有至少成功提交 ...
- PAT甲级真题目录(按题型整理)(转自柳神)
转载自:https://www.liuchuo.net/archives/2502?tdsourcetag=s_pcqq_aiomsg 最短路径 1003. Emergency (25)-PAT甲级真 ...
- 1075 PAT Judge 测试点四
测试点四试了很多次 是因为排序问题,把不能输出的和可以输出的记录一起排序,这里修改一下排序算法就ok了 参考了知乎的文章[PAT A1075]PAT Judge(详细解决测试点4!) - 知乎 (zh ...
- 【PAT甲级真题整理三】1061~1090
目录 1061 Dating(20)字符串处理 1062 Talent and Virtue(25)排序 1063 Set Similarity(25)set的使用 1064 Complete Bin ...
- PAT甲级真题 1018 A+B in Hogwarts--python解法
PAT甲级真题 1018 A+B in Hogwarts 提交:2638 通过:1559 通过率:59% If you are a fan of Harry Potter, you would kno ...
- PAT甲级1075 PAT Judge:[C++题解]排序、结构体
文章目录 题目分析 题目链接 题目分析 分析:主要问题在于判断是否出现过,如果出现过就不需要再初始化一个结构体,如果未出现过再初始化一个结构体. 当然还需要开一个hash表,用来映射学生id和结构体信 ...
- 【PTA】 PAT乙级真题,95题(C++,AC代码)
PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...
- PAT乙级1002 题(与柳神思路比对)
PAT乙级1002 题:写出这个数 题目描述:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字(n 小于 1 0 100 10^{100} 10100) 输出格式要求:在一行内输出 ...
- PAT甲级刷题记录-(AcWing)-(Day06树 8题)
PAT甲级刷题记录-(AcWing)-(Day06树 8题) 课程来源AcWing 其中AcWing中的题目为翻译好的中文题目 今日刷题列表 1110 Complete Binary Tree 111 ...
- 小峰峰的pat甲级刷题记录1020
小峰峰的pat甲级刷题记录1020 方法一:通过后序和中序序列构建树,再层序输出 #include<iostream> #include<vector> using names ...
最新文章
- echarts切换折线图变大_这个月,我就和折线图杠上了...
- 中科院包云岗:开源模式打造处理器芯片生态,总共要几步?
- 无法加载指定的元数据资源(转载)
- 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态
- 以任务为向导建立系统的学习知识流程
- 软件:推荐七款Windows下宝藏软件,值得收藏!
- 管理Sass项目文件结构
- 李开复:年轻人该比谁更拼命吗?
- 作者:​邓波(1973-),男,博士,北京系统工程研究所研究员。
- es查询大文本效率_进一步提高Elasticsearch的检索效率
- princomp 与pca的区别与联系
- 用PLSQL将Excel数据导入到Oracle中
- MySQL的回表查询与索引覆盖查询
- matlab程序转成可执行文件,matlab程序如何生成可执行文件
- xml网站地图在线生成制作工具
- Three.js-物理引擎(Physics)
- 线性稳压芯片的优势及注意事项
- [经验教程]谷歌浏览器google chrome如何设置默认百度搜索引擎?
- 爱淘宝手机版分类导航菜单弹出效果设计
- 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片