题目:选出给定小组球队数,以及比赛信息,输出晋级的小组。(按积分)相互胜负关系未考虑,净胜球未考虑。
#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,以便找出下一个最大积分的队名
}
}