滴滴校招编程题-田径运动会比赛排名

题目描述

一年一度的X星人田径运动会隆重开幕。小小X报名参加了跳跃比赛,这可是小小X最擅长的项目!跳跃比赛分为两轮,一轮是跳高,一轮是跳远。最终成绩将综合两轮比赛的成绩来确定,并且两轮比赛成绩在最终成绩的计算中各占一半权重。

现在已经知道小小X在跳高和跳远两轮比赛中分别的排名情况,现在请你编写一个程序帮小小X计算一下最终成绩排名中小小X可以获得的最好名次和最差名次。

输入描述

每组输入包含一个测试样例,每个测试样例包含3行。
第一行输入n,表示参赛人数(n<=26).
第二行输入n个不重复的大写字母,表示n个人按跳高成绩按最好到最差的排名。
第三行输入n个不重复的大写字母,表示n个人按跳远成绩从最好到最差的排名。
【每个字符对应一个参赛者,不存在排名相同的情况,其中X表示小小X,两个字符之间用空格隔开】

输出描述

输出一行,包含两个数分别为小小X在最终排名中的最好名次和最差名次,两个数之间用空格隔开。

样例

输入

10
A B C D E F X H I J
A C I X E F J H D B

输出

3 8

提示

样例解释

两项比赛中。A、C排名均在小小X前,故小小X的最终排名最好是前三名。

两项比赛中。J、H排名均在小小X前,故小小X的最终排名至少是第八名。

代码

#include<iostream>
using namespace std;
unsigned int n;	//	参赛人数
char a[26];	//跳高
char b[26];//跳远
unsigned int x;//X在跳高中的排名
unsigned int y;//X在跳远中的排名
int c = 1;
int d = 0;
int main() {
	cin >> n;
	cout << endl;
	if (n > 26)
		return 0;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	for (int i = 1; i <= n; i++)
	{
		cin >> b[i];
	}
	for (int i = 1; i <= n; i++)
	{
		if (a[i] == 'X')
			x = i;	
	}
	for (int i = 1; i <= n; i++)
	{
		if (b[i] == 'X')
			y = i;
	}
	for (int i = 1; i < x; i++)
	{
		for (int j = 1; j < y; j++)
		{
			if(a[i] == b[j])
				c++;
		}
	}
	for (int i = x+1; i <=n; i++)
	{
		for (int j = y+1; j <= n; j++)
		{
			if (a[i] == b[j])
				d++;
		}
	}
	cout << c  <<  ' ' << n - d<< endl;
	return 0;
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值