F1赛车比赛排名问题(oj)

阅读: 评论:0

F1赛车比赛排名问题(oj)

F1赛车比赛排名问题(oj)


话不多说,直奔主题。
1.要解决同一个人不同场比赛的得分与名次累计;
2.要解决两种排名方式所对应的排序方法;(sort函数与cmp定义相配合)

题中可得
第一场:apple 25; banana 18 ; pear 15
第二场:pear 25; banana 18
第三场:apple 25; banana 18
总计:
apple 50 banana 54 pear 40
apple : 第一2
banana: 第二3
pear: 第一1,第三1

第一种排序(先看分数,再看排名): banana; apple; pear
第二种排序(先看排名,再看分数): apple; pear; banana

#include <bits/stdc++.h>
#define N 200
using namespace std;
int score[11]={0,25,18,15,12,10,8,6,4,2,1};          //分数的顺序 
typedef struct info 
{char name[51];                //名字 int mark;                    //对应名次的分数 int pos;                      //对应的名次 int num[30];                      //名次为第n的次数 
}info;info loc[N];
int h;
int cmp(info a, info b)                            //第一种排名方式 (降序) 
{int i=1;if(a.mark==b.mark) return a.num[i]>b.num[i];       //先看分数,再看排名 else return a.mark>b.mark;if (a.mark==b.mark && a.num==b.num){i++;cmp(a,b);}
}int comp(info a, info b)                            //第二种排名方式 (降序) 
{int i=1;if (a.num[i]==b.num[i]) return a.mark>b.mark;        //先看排名,再看分数 else  return a.num[i]>b.num[i];if (a.mark==b.mark  && a.num[i]==b.num[i])           //均相同时,采用第一种方案 {i++;cmp(a,b);}}int main(int argc, char** argv)
{memset(loc,0,sizeof(loc));          //清零 int t,n,j,k; cin>>t; h=1;int max=0,x;for (int i=1; i<=t; i++)            //输入选手信息,初始化 {cin>>n; for (k=1; k<=n; k++){cin>>loc[h].name;loc[h].mark=score[k];loc[h].pos=k; loc[h].num[k]=0;if (loc[h].pos==k) loc[h].num[k]++; h++;}}h-=1;for (int i=1; i<h; i++)for (j=i+1; j<=h; j++){if (strcmp(loc[i].name, loc[j].name)==0)  //同一个人 {loc[i].mark+=loc[j].mark;             //成绩相加 for (int l=1; l<=h; l++)              loc[i].num[l]+=loc[j].num[l];         //所得名次的次数相加 }}sort(loc+1, loc+h, cmp);cout<<endl;cout<<loc[1].name<<endl;              //第一种排序最高 sort(loc+1, loc+h, comp);cout<<loc[1].name<<endl;              //第二种排序最高 return 0; 
}

运行结果

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

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

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

下一篇:F1
标签:oj
留言与评论(共有 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