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

news/2024/11/25 17:36:27/

在这里插入图片描述
话不多说,直奔主题。
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; 
}

运行结果

在这里插入图片描述


http://www.ppmy.cn/news/378763.html

相关文章

F1方程式冠军

【问题描述】 一级方程式F1锦标赛由一系列称为大奖赛的分站赛组成。每一场比赛的车手都根据他们的最后位置获得积分。只有前10名车手按以下顺序获得分数&#xff1a;25、18、15、12、10、8、6、4、2、1。在锦标赛结束时&#xff0c;得分最多的车手是冠军。如果有平分&#xff0…

模拟车辆行驶

在PhysX中提供了模拟各种车辆行驶的接口。一些车辆运动的物理参数都可以通过该物理引擎设置后模拟现实中的车辆行驶。 首先会用到一个车辆的描述器VehiclDesc&#xff0c;它就像一个总的指挥长&#xff0c;负责整个车辆的运作。 1. 自身的物理特性&#xff0c;如车辆在…

1.2 最佳赛车问题

1.2 最佳赛车问题 题目描述 四名专家对四款赛车进行评论。 专家A说&#xff1a;2号赛车是最好的。 专家B说&#xff1a;4号赛车是最好的。 专家C说&#xff1a;3号不是最佳赛车。 专家D说&#xff1a;专家B说错了。 事实上只有一款赛车最佳&#xff0c;且只有一名专家说对了&a…

模拟赛车torcs配置

在TORCS中&#xff0c;所有选项都存储在一组XML配置文件中&#xff08;每种种族模式一种&#xff09;。 在Linux配置文件被创建之前&#xff0c;游戏第一次启动&#xff0c;并位于$ HOME / .torcs / config / raceman /&#xff0c;其中$ HOME是您的主目录。 在Windows下&#…

基于大学生方程式赛车的车速测量与数据显示

基于大学生方程式赛车的车速测量与数据显示 一、设计背景 ​ 根据调查显示&#xff0c;越来越多的车队已经或有意向使用多电机作为赛车的驱动方式。因此赛车各驱动轮的扭矩分配就显得相当重要&#xff0c;从而需要精准地测量出赛车在各个状态的车速。 二、设计目标 ​ 能够实…

真实赛车的驾驶方法

基本赛车驾驶法  稍微关心赛车运动的车迷&#xff0c;一定很想知道驾驶赛车的方法与驾驶普通轿车有什么分别、要注意些什么、什么是HeelToe、LeftFootBreak又是什么东西……  一、驾驶坐姿  这是最重要的一环&#xff01;笔者记得在考驾驶执照的长途考试时&#xff0c;同…

用计算机制作模拟汽车,真实模拟驾驶汽车

真实模拟驾驶汽车电脑版是一款有趣的模拟驾驶类赛车游戏。真实模拟驾驶汽车官方版拥有3D画面效果和超真实的车内细节&#xff0c;前车门、后车门、后备箱、油门、刹车等应有尽有。真实模拟驾驶汽车游戏给玩家带来更加逼真的驾驶体验&#xff0c;还原真实开车场景。 真实模拟驾驶…

赛车游戏中赛车的物理建模

一般情况下&#xff0c;赛车的物理建模可能需要需要以下的这些数据&#xff1a; 1、最高时速&#xff1b; 2、最大功率&#xff0c;用于计算牵引力或速度&#xff0c;功率(W)速度(m/s)*力(N)&#xff09;&#xff0c;0-100km/h的加速时间&#xff0c;可以用于计算启动阶段大概…