PAT 1012
来源:互联网 发布:安卓5.1可用java模拟器 编辑:程序博客网 时间:2024/05/11 13:56
思路:根据每门课程优先级高低进行排序,平均分直接计入rank,剩下的记为nowrank,如果排序结果的排名要比之前一个要高则进行替换.
有更简单的办法,方法还是略复杂而且因为思路略为混乱总是有2个小样例过不去,还好最后过了
代码:
#include<iostream>#include<string>#include<algorithm>#include<string.h>using namespace std;#define MAX 2005struct Bank {string number;int C, E, M,A;int rank;int nowrank;char n;}a[2005];bool cmp1(Bank a, Bank b) {return a.A > b.A;}bool cmp2(Bank a, Bank b) {return a.C > b.C;}bool cmp3(Bank a, Bank b) {return a.M > b.M;}bool cmp4(Bank a, Bank b) {return a.E > b.E;}int main() {int N, M,i;string num;int j;scanf("%d %d", &N, &M);for ( i = 0; i < N; i++) {cin >> a[i].number >> a[i].C >> a[i].M >> a[i].E;a[i].A = a[i].C + a[i].E + a[i].M;}sort(a, a + N, cmp1);a[0].rank = 0;a[0].n = 'A';for ( i = 1; i < N; i++) {if (a[i].A == a[i - 1].A) {a[i].rank = a[i - 1].rank;a[i].n = 'A';}else {a[i].rank = i;a[i].n = 'A';}}sort(a, a + N, cmp2);if (a[0].rank > 0) {a[0].rank = 0;a[0].n = 'C';}for (i = 0; i < N; i++)a[i].nowrank = 0;for ( i = 1; i < N; i++) {if (a[i].C==a[i-1].C) {a[i].nowrank = a[i - 1].nowrank;}else {a[i].nowrank = i;}}for (i = 1; i < N; i++) {if (a[i].nowrank < a[i].rank) {a[i].rank = a[i].nowrank;a[i].n = 'C';}}sort(a, a + N, cmp3);for (i = 0; i < N; i++)a[i].nowrank = 0;if (a[0].rank > 0) {a[0].rank = 0;a[0].n = 'M';}a[0].nowrank = 0;for ( i = 1; i < N; i++) {if (a[i].M == a[i - 1].M) {a[i].nowrank = a[i - 1].nowrank;}else {a[i].nowrank = i;}}for (i = 1; i < N; i++) {if (a[i].nowrank < a[i].rank) {a[i].rank = a[i].nowrank;a[i].n = 'M';}}sort(a, a + N, cmp4);if (a[0].rank > 0) {a[0].rank = 0;a[0].n = 'E';}for (i = 0; i < N; i++)a[i].nowrank = 0;for (i = 1; i < N; i++) {if (a[i].E == a[i - 1].E) {a[i].nowrank = a[i - 1].nowrank;}else {a[i].nowrank = i;}}for (i = 1; i < N; i++) {if (a[i].nowrank < a[i].rank) {a[i].rank = a[i].nowrank;a[i].n = 'E';}}for (i = 0; i < M; i++){cin >> num;for ( j = 0; j < N; j++) {if (a[j].number == num) {printf("%d %c\n", a[j].rank+1, a[j].n);break;}}if (j == N) {printf("N/A\n");}}return 0;}
0 0
- pat 1012
- PAT 1012
- PAT 1012
- PAT 1012
- PAT 1012
- PAT(A) 1012
- PAT Advanced 1012
- PAT(甲级)1012
- PAT Basic 1012
- PAT 1012 数字分类
- 1012 数字分类 PAT
- PAT-1012 数字分类
- PAT解题1012
- 数字分类,PAT,1012
- PAT乙级1012
- pat-bl-1012
- PAT 乙级 1012
- PAT甲级1012
- 【SQL语句】Order by 两个字段同时排序
- Bmob移动后端云简单集成
- hibernate
- 抽象基类的指针或引用玩法
- 一键解决 504 Connect to www.google.com.hk:80 failed:SOCKS protocol error
- PAT 1012
- 图片服务器架构的演变
- 整合 SSH
- JQ工作原理
- Vue2+VueRouter2+webpack 构建项目实战(一)准备工作
- CornerStone 2.7.18 永久试用方法
- opencv读matlab中.mat文件
- C#开发人员应知道的13件事
- 有才而性缓,有智而气和