解法:map+stringstream!
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
int k=0,v=0;;
map<string,int>pq;
while(getline(cin,str))
{
string str1,str2,str3,str5;
int i,j,kk;
for(i=0;str[i]!='-';i++)
str1+=str[i];
for(j=i+2;str[j]!=':';j++)
str2+=str[j];
for(kk=j+2;kk<str.length();kk++)
str5+=str[kk];
str3=str1+str2;
if(str1>str2)
str3=str2+str1;
if(!pq.count(str3))
pq[str3]=k++;
string buf;
for(j=0;j<str5.length();j++)
{
if(isalpha(str5[j]))
str5[j]=tolower(str5[j]);
else
str5[j]=' ';
}
stringstream ss(str5);
while(ss>>buf)
{
int w=0,u=0;
for(j=0;j<buf.length();j++)
{
if(j&1)
if(buf[j]=='e')
w++;
if(!(j&1))
if(buf[j]=='h')
u++;
}
if(w+u==buf.length()&&w==u)
v++;
}
}
printf("%.0lf%%\n",1.0*v/k*100);
return 0;
}