摘要: 这题给出了$PAT$的排名规则 在结构体类型中存放题目要求的信息(准考证号、分数、考场号以及考场内排名)。 根据题目要求,需要写一个排序函数cmp,规则如下: 当分数不同时,按分数从大到小排序。 否则,按准考证号从小到大排序。 而算法本体则分为下面三个部分: 按考场读入各考生的信息,并对当前读入考场 阅读全文
posted @ 2021-01-30 20:44 Dazzling! 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 选择排序 简单选择排序是指:对一一个序列A中的元素A[1] ~ A[n],令i从1到n枚举,进行n趟操作,每趟从待排序部分[i, n]中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换,这样元素A[i]就会与当前有序区间[1, i- 1]形成新的有序区间[1, i]。于是在n趟操作后,所 阅读全文
posted @ 2021-01-30 20:09 Dazzling! 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 注意进制转换时对0的特殊处理。 int a,b; string s; char tran(int x) { if(x >= 0 && x <= 9) return x+'0'; else return 'A'+x-10; } int get(char c) { if(isdigit(c)) retu 阅读全文
posted @ 2021-01-30 19:23 Dazzling! 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 注意对相加为$0$的特殊处理,结果一定为$0$。 如果进制转换时使用的是while语句而不是do...while语句,那么要注意当A+B为0时需要特判输出0。 int a,b,d; int main() { cin>>a>>b>>d; int sum=a+b; vector<int> res; if 阅读全文
posted @ 2021-01-30 17:27 Dazzling! 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 特定字符有可能是空格符,那么就不能用cin读入字符了。 第一个getchar()读取字符,第二个getchar()读取回车防止影响之后getline的读入。 int main() { string s; char c; while(getline(cin,s)) { c=getchar(); get 阅读全文
posted @ 2021-01-30 15:52 Dazzling! 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 虽然是道水题,但还是有点东西可写的,顺道学习了一下string中find()的用法。 最暴力的思路就是找一个删一个,但删除的话必然涉及到大量元素的移动。 int main() { string s; cin>>s; getchar(); for(int i=0;i<s.size();i++) s[i 阅读全文
posted @ 2021-01-30 14:48 Dazzling! 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 四年一闰,百年不闰,四百年再闰。 根据这个写出的程序的核心算法就是: bool isleap(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } 关于公历闰年是这样规定的:地球绕太阳公转一周叫做一 阅读全文
posted @ 2021-01-30 00:05 Dazzling! 阅读(959) 评论(0) 推荐(0) 编辑