题目地址:点击打开链接
C++代码:
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include<algorithm>
using namespace std;
struct MyStruct
{
string country;
int num;
};
int binary_search(MyStruct S[],int begin,int end,string &s)
{
if(begin>end)
return -1;
int mid=(begin+end)/2;
if(S[mid].country==s)
return mid;
else
{
if(S[mid].country>s)
return binary_search(S,begin,mid-1,s);
else
return binary_search(S,mid+1,end,s);
}
}
bool cmp(MyStruct A,MyStruct B)
{
return A.country<B.country;
}
int main()
{
int n;
MyStruct MS[2010];
while(cin>>n)
{
int i;
for(i=0;i<n;++i)
MS[i].num=0;
int number=0;
getchar();
while(n--)
{
string s1;
getline(cin,s1);
int it=0;
while(s1[it]!=' ')++it;
string s(s1,0,it);
int iter=binary_search(MS,0,number-1,s);
if(iter==-1)
{
MS[number].country=s;
MS[number++].num=1;
}
else
{
++MS[iter].num;
}
sort(MS,MS+number,cmp);
}
for(i=0;i<number;++i)
cout<<MS[i].country<<" "<<MS[i].num<<endl;
}
return 0;
}