小组的晋级球队

题目:选出给定小组球队数,以及比赛信息,输出晋级的小组。(按积分)相互胜负关系未考虑,净胜球未考虑。

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>

using namespace std;

int main()
{
	int teamnum = 0;//队伍数
	cout<<"Input teamnum: ";
	cin>>teamnum;
	
	vector<string> vecs;//输入的队伍名 如 guangzhou 
	
	int num[100]={0};//队伍积分数 num[0]就是 vecs[0]队伍的积分

    cout<<"Input "<<teamnum<<" teamnum: "<<endl;
	for(int i=0;i<teamnum;++i)//输入队伍名
	{
		string str;
		cin>>str;
		vecs.push_back(str);
	}

    cout<<"Input "<<teamnum<<" team match information like:A-B 2:0 "<<endl;
	for(int i=0;i<teamnum*(teamnum-1)/2;++i)
	{
		string teamname;
		string scoreinfo;
		string strA;
		string strB;
		string strC;
		string strD;
		
        //队伍的比赛信息 如 guangzhou:shenzhen 3:0 形式
		cin>>teamname;//队伍信息
		cin>>scoreinfo;//比分信息//队伍与比分有空格分开
		for(int i=0;i<teamname.size();++i)
		{
			if(teamname[i]!='-')
				strA=strA+teamname[i];//队伍信息中A队伍名
			else 
				break;
		}


		for(int i=strA.size()+1;i<teamname.size();++i)
		{
			if(teamname[i]!=' ')
				strB=strB+teamname[i];//B队伍名
			else 
				break;
		}

		for(int i=0;i<scoreinfo.size();i++)
		{
			if(scoreinfo[i]!=':')
				strC=strC+scoreinfo[i];//比分信息中A队伍得分
			else 
				break;
		}

		for(int i=strC.size()+1;i<scoreinfo.size();i++)
		{
			if(scoreinfo[i]!=':')
				strD=strD+scoreinfo[i];//B队伍得分
			else 
				break;
		}

		if(strC>strD)//得分比较
		{
			for(int i=0;i<vecs.size();++i)
			{
				if(vecs[i]==strA)
					num[i]+=3;
				if(vecs[i]==strB)
					num[i]+=0;
			}
		}
		
		if(strC==strD)
		{
			for(int i=0;i<vecs.size();++i)
			{
				if(vecs[i]==strA)
					num[i]+=1;
				if(vecs[i]==strB)
					num[i]+=1;
			}
		}
		
		if(strC<strD)
		{
			for(int i=0;i<vecs.size();++i)
			{
				if(vecs[i]==strA)
					num[i]+=0;
				if(vecs[i]==strB)
					num[i]+=3;
			}
		}


	}

	int max =0;//求最大的值
	int t=0;//最大值的下标
    cout<<"Output the "<<teamnum/2<<" qualified team and points:"<<endl;
	for(int i=0;i<teamnum/2;++i)
	{
		max=0;
		for(int i=0;i<teamnum;++i)
		{
			
			if(max<num[i])
			{ 
				max=num[i];//最大值
				t=i;//下标赋给t
			}	
	    }

	    cout<<vecs[t]<<" "<<max<<endl;//输出拥有最大积分的队名
	    num[t]=0;//将最大积分变为0,以便找出下一个最大积分的队名
	}

}


问题描述】 欧洲冠军联赛常被誉为全世界最具影响力的俱乐部级赛事。在比赛的小组赛阶段,欧洲的各个足球俱乐部被分为八个小组,每个小组中四支球队。每个小组中的球队按照如下规则排序: 球队会根据比赛结果获得积分。一场比赛的双方被称为主队和客队。如果其中一方进球数多于另一方,那么进球较多的一方获得3 分,另一方获得0 分。如果双方打成平手,则各得1分。 球队的净胜球数是其进球数减去失球数(不考虑该球队在比赛中作为主队还是客队)。 积分较高的球队排名更加靠前。 如果两支球队积分相同,那么净胜球数较多的球队排名靠前。 小组的各队伍进行循环赛,即每两支球队之间进行两场比赛,双方交替作为主队。给定一个小组12 场比赛的结果,请求出小组的出线队伍:即排名第一和第二的两支球队。 保证答案唯一。 【输入形式】 输入的第一行包含一个整数T,代表测试数据的组数。接下来是 T 组数据。 每组数据共有12 行,每行描述一场比赛,格式为:“主队队名主队进球数vs. 客队进球数客队队名”,其中“主队队名”和“客队队名”为字符串,“主队进球数”和“客队进球数”为两球队在本场比赛中各自的进球数量。 1 ≤ T ≤ 50 球队队名仅包含小写英文字母 球队队名长度不超过10 个字符 0 ≤ 进球数 ≤ 100 【输出形式】 对于每组数据,输出一行,包含两个字符串,代表排名第一和第二的球队的队名。 【样例输入】 2 manutd 8 vs. 2 arsenal lyon 1 vs. 2 manutd fcbarca 0 vs. 0 lyon fcbarca 5 vs. 1 arsenal manutd 3 vs. 1 fcbarca arsenal 6 vs. 0 lyon arsenal 0 vs. 0 manutd manutd 4 vs. 2 lyon arsenal 2 vs. 2 fcbarca lyon 0 vs. 3 fcbarca lyon 1 vs. 0 arsenal fcbarca 0 vs. 1 manutd a 3 vs. 0 b a 0 vs. 0 c a 0 vs. 0 d b 0 vs. 0 a b 4 vs. 0 c b 0 vs. 0 d c 0 vs. 0 a c 0 vs. 0 b c 1 vs. 0 d d 3 vs. 0 a d 0 vs. 0 b d 0 vs. 0 c 【样例输出】 manutd fcbarca d b 【样例说明】 第一组数据:每支球队的积分与净胜球数分别为: manutd:16 分,净胜球数12。 fcbarca:8 分,净胜球数 4。 arsenal:5 分,净胜球数 −5。 lyon:4 分,净胜球数 −11。 第二组数据:每支球队的积分与净胜球数分别为: d:7 分,净胜球数 2。 b:7 分,净胜球数 1。 a:7 分,净胜球数 0。 c:7 分,净胜球数 −3。 所有球队的积分相同,但是净胜球数较多的队伍排名更加靠前。 编程语言 c++
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值