简单的哈希应用,我使用set实现的,虽然效率比较低,但是程序比较好写。
#include <stdio.h>
#include <string>
#include <string.h>
#include <set>
using namespace std;
string set1[1600];
string set2[1600];
set<string> s;
void func(int len1, int len2)
{
s.clear();
int i, j;
string str;
for(i=1; i<=len1; i++)
{
for(j=1; j<=len2; j++)
{
str = "";
str.append(set1[i]);
str.append(set2[j]);
s.insert(str);
}
}
printf("%d\n", s.size());
}
int main(void)
{
int N, i, j;
int len1, len2;
char buffer[20];
//freopen("input.dat", "r", stdin);
gets(buffer);
sscanf(buffer, "%d", &N);
for(i=1; i<=N; i++)
{
gets(buffer);
sscanf(buffer, "%d %d", &len1, &len2);
for(j=1; j<=len1; j++)
{
gets(buffer);
set1[j].assign(buffer, strlen(buffer));
}
for(j=1; j<=len2; j++)
{
gets(buffer);
set2[j].assign(buffer, strlen(buffer));
}
printf("Case %d: ", i);
func(len1, len2);
}
return 0;
}