PAT 1012 The Best Rank (25)
来源:互联网 发布:iphone吉他独奏软件 编辑:程序博客网 时间:2024/06/04 18:20
题目如下:就是找出每位同学自己四门功课C、M、E、A最好的一个排名,优先排名A>C>M>E
代码如下,主要还是一个排序问题:
#include <iostream>#include <cstring>int sishe(float num);int min(int cp,int ma,int en,int av) ;using namespace std;int main(){string str[2001];int rank[2001][5]={0};int best[2001]={0};//存储每个同学最好功课代号 char gk[5]={' ','C','M','E','A'};int N,M;cin>>N>>M;int total_cp[101],total_ma[101],total_en[101],total_av[101];memset(total_cp,101,0);memset(total_ma,101,0);memset(total_en,101,0);memset(total_av,101,0);int cp[2001],ma[2001],en[2001],av[2001];memset(cp,2001,0);memset(ma,2001,0);memset(en,2001,0);memset(av,2001,0);for(int i=1;i<=N;i++){cin>>str[i]>>cp[i]>>ma[i]>>en[i];av[i]=sishe((cp[i]+ma[i]+en[i])/3.0);total_cp[cp[i]]++;//统计cp功课各个分数人数total_ma[ma[i]]++;//统计ma功课各个分数人数total_en[en[i]]++;//统计en功课各个分数人数total_av[av[i]]++;//统计av功课各个分数人数}for(int i=1;i<=N;i++){for(int j=cp[i]+1;j<=100;j++)rank[i][1]=rank[i][1]+total_cp[j];//统计第i位同学,cp功课排在他的前面有多少人 for(int j=ma[i]+1;j<=100;j++)rank[i][2]=rank[i][2]+total_ma[j];//统计第i位同学,ma功课排在他的前面有多少人 for(int j=en[i]+1;j<=100;j++)rank[i][3]=rank[i][3]+total_en[j];//统计第i位同学,en功课排在他的前面有多少人 for(int j=av[i]+1;j<=100;j++)rank[i][4]=rank[i][4]+total_av[j];//统计第i位同学,av功课排在他的前面有多少人 }for(int i=1;i<=N;i++)best[i]=min(rank[i][1],rank[i][2],rank[i][3],rank[i][4]);//找出第i位同学排名最靠前的一门功课 string ID[2001];for(int i=1;i<=M;i++)cin>>ID[i];for(int i=1;i<=M;i++){int j=1;for(;j<=N;j++){if(str[j]==ID[i]){cout<<rank[j][best[j]]+1<<' '<<gk[best[j]]<<endl;//此处 rank[j][best[j]]+1是因为他的前面有rank[j][best[j]]位同学,他出于排在下一位,有可能与很多人并列第多少名 break;}}if(j>N)cout<<"N/A"<<endl;}return 0;}int sishe(float num)//对得到的浮点数做四舍五入处理 {int temp=(int)(num*10);if(temp%10>=5)return (int)(temp/10)+1;elsereturn (int)num;}int min(int cp,int ma,int en,int av)//找出排名最靠前的一门功课 {if(en<ma&&en<cp&&en<av)return 3;else if(ma<=en&&ma<cp&&ma<av)return 2;else if(cp<=ma&&cp<=en&&cp<av)return 1;elsereturn 4;}
0 0
- PAT 1012 The Best Rank (25)
- pat 1012 The Best Rank
- pat 1012 The Best Rank
- PAT 1012 The Best Rank
- PAT 1012 The Best Rank
- 浙大PAT (Advanced Level) Practise 1012 The Best Rank (25)
- PAT (Advanced Level) Practise 1012 The Best Rank (25)
- ZJU PAT 1012 The Best Rank
- zju pat 1012 The Best Rank
- PAT 1012(甲级) The Best Rank
- pat甲级1012-The Best Rank
- 1012. The Best Rank (25)-PAT
- pat 1012. The Best Rank (25)
- 【PAT】1012. The Best Rank (25)
- PAT (Advanced) 1012. The Best Rank (25)
- PAT 1012. The Best Rank (25)
- PAT A 1012. The Best Rank (25)
- PAT 1012. The Best Rank (25)
- vim IDE配置(未完成)
- 143.按规定链接字符串
- nginx php-fpm安装配置
- Activity 的最佳实践
- 什锦系统运维架构试题及答案--不时更新
- PAT 1012 The Best Rank (25)
- C++第4章 实验
- CSS3绘制砖墙-没有用任何图片
- 设计模式之策略模式
- 《Spring技术内幕》笔记-Spring的设计理念和整体架构
- Lua 与C/C++ 交互系列:动态注册枚举enum到Lua Code中,在运行时在Lua Code中获取内省信息
- 创始人面对投资人做Pitch十二禁
- Minigui-3.0.12 开发记录
- 第一行代码 读书笔记 第2章