这是我第一用 stl 写的程序,在VS2008下面编译没有通过, 但代码却提交成功。
发出来纪念一下,为以后做个参考吧。
#include <iostream>
#include <map>
#include <cmath>
#include <stdio.h>
using namespace std;
string ten(10, '-');
int main(int argc, char *argv[])
{
int n;
cin >> n;
map<string, int> match;
map<string, int> document;
while ( n-- > 0 )
{
match.clear();
string a, b;
do
{
cin >> a;
if( a == ten)
break;
b = "";
for(unsigned int i = 0; i < a.size(); i++)
{
if(isdigit(a[i]) || islower(a[i]))
b += a[i];
else if( isupper(a[i]))
b += (tolower(a[i]));
}
if(b != "")
match[b]++;
}while(1);
document.clear();
cin >> a;
while(1)
{
do
{
if(a == ten)
break;
b = "";
for(int i = 0; i < a.size(); i++)
{
if(isdigit(a[i]) || islower(a[i]))
b += a[i];
else if( isupper(a[i]))
b += (tolower(a[i]));
}
//if(b != "")
// document[b]++;
if(match[b] > 0)
document[b]++;
cin >> a;
}while(1);
double sum = 0;
for(map<string, int>::iterator pos = match.begin(); pos != match.end(); pos++)
{
double m1 = pos->second;
double m2 = document[pos->first];
sum += sqrt(m1 * m2);
}
printf("%.2lf\n", sum);
document.clear();
cin >> a;
if( a == ten)
break;
}
if(n > 0)
printf("\n");
}
return 0;
}