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] 好题相关推荐

  1. A1075.PAT Judge

    题意 输入k个程序的每个程序的满分分数,再输入m条用户提交的记录.按要求进行分数的排序最后输出.是一道结构体的复杂排序 思路分析 首先明确本题的输出要求: 编译失败的提交分数为-1. 只有至少成功提交 ...

  2. PAT甲级真题目录(按题型整理)(转自柳神)

    转载自:https://www.liuchuo.net/archives/2502?tdsourcetag=s_pcqq_aiomsg 最短路径 1003. Emergency (25)-PAT甲级真 ...

  3. 1075 PAT Judge 测试点四

    测试点四试了很多次 是因为排序问题,把不能输出的和可以输出的记录一起排序,这里修改一下排序算法就ok了 参考了知乎的文章[PAT A1075]PAT Judge(详细解决测试点4!) - 知乎 (zh ...

  4. 【PAT甲级真题整理三】1061~1090

    目录 1061 Dating(20)字符串处理 1062 Talent and Virtue(25)排序 1063 Set Similarity(25)set的使用 1064 Complete Bin ...

  5. 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 ...

  6. PAT甲级1075 PAT Judge:[C++题解]排序、结构体

    文章目录 题目分析 题目链接 题目分析 分析:主要问题在于判断是否出现过,如果出现过就不需要再初始化一个结构体,如果未出现过再初始化一个结构体. 当然还需要开一个hash表,用来映射学生id和结构体信 ...

  7. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  8. PAT乙级1002 题(与柳神思路比对)

    PAT乙级1002 题:写出这个数 题目描述:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字(n 小于 1 0 100 10^{100} 10100) 输出格式要求:在一行内输出 ...

  9. PAT甲级刷题记录-(AcWing)-(Day06树 8题)

    PAT甲级刷题记录-(AcWing)-(Day06树 8题) 课程来源AcWing 其中AcWing中的题目为翻译好的中文题目 今日刷题列表 1110 Complete Binary Tree 111 ...

  10. 小峰峰的pat甲级刷题记录1020

    小峰峰的pat甲级刷题记录1020 方法一:通过后序和中序序列构建树,再层序输出 #include<iostream> #include<vector> using names ...

最新文章

  1. echarts切换折线图变大_这个月,我就和折线图杠上了...
  2. 中科院包云岗:开源模式打造处理器芯片生态,总共要几步?
  3. 无法加载指定的元数据资源(转载)
  4. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态
  5. 以任务为向导建立系统的学习知识流程
  6. 软件:推荐七款Windows下宝藏软件,值得收藏!
  7. 管理Sass项目文件结构
  8. 李开复:年轻人该比谁更拼命吗?
  9. 作者:​邓波(1973-),男,博士,北京系统工程研究所研究员。
  10. es查询大文本效率_进一步提高Elasticsearch的检索效率
  11. princomp 与pca的区别与联系
  12. 用PLSQL将Excel数据导入到Oracle中
  13. MySQL的回表查询与索引覆盖查询
  14. matlab程序转成可执行文件,matlab程序如何生成可执行文件
  15. xml网站地图在线生成制作工具
  16. Three.js-物理引擎(Physics)
  17. 线性稳压芯片的优势及注意事项
  18. [经验教程]谷歌浏览器google chrome如何设置默认百度搜索引擎?
  19. 爱淘宝手机版分类导航菜单弹出效果设计
  20. 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片

热门文章

  1. 在 WINDOWS 7 的 XAMPP 安裝 MEMCACHED 擴展
  2. Android多点触摸 与 手势识别
  3. 典型信息化案例点评(2)
  4. 16c语言第七届省赛,第十六届青少年信息学奥林匹克联赛初赛试题(附答案)
  5. random随机数类
  6. python中iter方法_Python中的迭代器(iter())函数。
  7. 【转】Topshelf入门
  8. mongoose学习记录
  9. pyinstaller 32位 64位的问题
  10. 自动化测试神器 之 python unittest 断言