PAT甲级1012,选择排序,测试点分析

阅读: 评论:0

PAT甲级1012,选择排序,测试点分析

PAT甲级1012,选择排序,测试点分析

PAT 甲级1012是一道排序的题,我没有如大多数人一样选择适用sort函数,而是使用了选择排序的方法写了一个函数。

这个函数需要三个参数,第一个参数是需要排序的数组的指针。第二个参数是需要排序的数组的size。第三个参数也是一个数组的指针,数组下标0、1、2分别对应第一、二、三个学生,以此类推,值在main函数中没有被初始化,经过选择函数操作进行赋值,相应的值就是这个学生该成绩的排名。

在main函数中调用排序函数四次,函数就可以生成四个分别对应A、C、M、E的排名数组,下标与学生id一一对应,第一个学生就可以通过下标0查看其排名,以此类推。

5个测试点中,如果没有对相同成绩的情况进行处理,2、3测试点会通不过,我在排序函数中的最后进行了专门处理。

交流可加QQ:1724330748

#include<iostream>
#include<cstring>void xuanze(int *subject, int N, int *subrank);
using namespace std;void xuanze(int *subject, int N, int*subrank)
{int stuid[N];for(int i=0;i<N;i++){stuid[i]=i;}for(int i=0;i<N;i++){int positionmax=i;for(int loca=i;loca<N;loca++){if(subject[loca]>subject[positionmax])positionmax=loca;}int temp1=subject[i];subject[i]=subject[positionmax];subject[positionmax]=temp1;int temp2=stuid[i];stuid[i]=stuid[positionmax];stuid[positionmax]=temp2;}for(int ID=0;ID<N;ID++){for(int j=0;j<N;j++){if(stuid[j]==ID)subrank[ID]=j;}}for(int sameid=0;sameid<N-1;sameid++){if(subject[sameid]==subject[sameid+1]){//一个名次是sameid,一个名次是sameid+1int tempid1, tempid2;for(int i=0;i<N;i++){if(subrank[i]==sameid)tempid1=i;}for(int i=0;i<N;i++){if(subrank[i]==sameid+1)tempid2=i;}subrank[tempid2]=subrank[tempid1];}}}int main()
{int N, M, i, j, k, l;cin>>N>>M;string stuida[N], stuidb[M];int Cp[N], Ma[N], En[N];for(i=0;i<N;i++){cin>>stuida[i]>>Cp[i]>>Ma[i]>>En[i];}for(j=0;j<M;j++){cin>>stuidb[j];}int An[N];for(k=0;k<N;k++){An[k]=(Cp[k]+Ma[k]+En[k])/3;}int Anrank[N],Cprank[N],Marank[N],Enrank[N];xuanze(An,N,Anrank);xuanze(Cp,N,Cprank);xuanze(Ma,N,Marank);xuanze(En,N,Enrank);for(l=0;l<M;l++){bool cunzai=false;for(int o=0;o<N;o++){if(stuidb[l]==stuida[o]){cunzai=true;char bestsub='A';int bestrank=Anrank[o]+1;if(Cprank[o]+1<bestrank){bestsub='C';bestrank=Cprank[o]+1;}if(Marank[o]+1<bestrank){bestsub='M';bestrank=Marank[o]+1;}if(Enrank[o]+1<bestrank){bestsub='E';bestrank=Enrank[o]+1;}cout<<bestrank<<" "<<bestsub<<endl;}}if(cunzai==false)cout<<"N/A"<<endl;}return 0;
}

本文发布于:2024-01-28 09:04:29,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064038726311.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   PAT
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23