PAT 甲级 1012. The Best Rank (25)
来源:互联网 发布:冰箱 知乎 编辑:程序博客网 时间:2024/05/21 10:45
题目:点击打开链接
思路:1.数据输入后,编写自定义排序函数进行比较
2.排序后记录相应的等级
3.对于输入的编号,查找是否有成绩,若有输出最高等级,若无,按题意输出。
注意:
1.注意成绩并列的情况
2.注意排序函数的编写,如需要变量,可将其定义为全局函数,这样编写比较简便。
代码:
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;struct stu{string ID;int grade[4];int r[4];};char C[4]={'A','C','M','E'};//自定义比较函数int item;bool rank0(const stu &a,const stu &b){return a.grade[item]>b.grade[item]; //分数由高到低排列}//根据比较结果写入等级void write(vector<stu> &A,int num,int k){int i=1;A[0].r[k]=1;for(;i<num;++i){if(A[i].grade[k]<A[i-1].grade[k]) //注意排名并列的情况 A[i].r[k]=i+1;elseA[i].r[k]=A[i-1].r[k];}}int main(){int N,M;cin>>N>>M;//输入vector<stu> S(N);int i;for(i=0;i<N;i++){cin>>S[i].ID;cin>>S[i].grade[1]>>S[i].grade[2]>>S[i].grade[3];S[i].grade[0]=(S[i].grade[1]+S[i].grade[2]+S[i].grade[3])/3;//平均分A//根据优先度A>C>M>E来输入}//输入IDvector<string> id(M);for(i=0;i<M;++i){cin>>id[i];}//排序for(i=0;i<4;++i){item=i; sort(S.begin(),S.end(),rank0); write(S,N,item); //写等级}//查找vector<stu>::iterator iter;int min,q;for(i=0;i<M;++i){//查找是否有相应成绩iter=S.begin();while(iter!=S.end()){if((*iter).ID==id[i])break;++iter;}if(iter!=S.end()){min=(*iter).r[0]; q=0;//当前最小等级for(int p=1;p<4;++p) //对于每一个方面,ACME{if((*iter).r[p]<min){min=(*iter).r[p];q=p; //当前项目编号}}cout<<min<<" "<<C[q]<<endl;}else{cout<<"N/A"<<endl;}}system("pause");return 0;}
阅读全文
0 0
- 【PAT甲级】1012. The Best Rank (25)
- PAT甲级.1012. The Best Rank (25)
- 1012. The Best Rank (25) PAT甲级
- PAT甲级1012. The Best Rank (25)
- PAT 甲级1012. The Best Rank (25)
- PAT 甲级 1012. The Best Rank (25)
- PAT 甲级 1012. The Best Rank (25)
- PAT 甲级 1012. The Best Rank
- PAT甲级A1012. The Best Rank (25)
- 1012. The Best Rank (25)-PAT甲级真题
- PAT(甲级)1012. The Best Rank (25)
- PAT甲级练习1012. The Best Rank (25)
- PAT甲级真题1012. The Best Rank (25)
- [PAT甲级]1012. The Best Rank (25)(最好排名)
- PAT 1012(甲级) The Best Rank
- pat甲级1012-The Best Rank
- 1012. The Best Rank (25)-PAT
- pat 1012. The Best Rank (25)
- MySQL:日期函数、时间函数总结
- JavaScript 开发的40个经典技巧
- linux临时或永久修改DNS
- xftp从windows传输文件到linux,拒绝下载
- 查询Mysql数据库的所有存储过程和函数
- PAT 甲级 1012. The Best Rank (25)
- (100)TCP:socket、ServerSocket
- jQuery源码阅读(十四)---aJax 模块与异步队列联系
- 滚动事件判断滚动条
- windows7修改双系统启动项名称、先后顺序、等待时间
- centos创建二级域名
- python命令行解析模块argparse
- Android开源项目及库整理总结
- 洛谷OJ上的A+B花(zhuang)式(bi)解法