小组的晋级球队

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

#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,以便找出下一个最大积分的队名
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值